2016-12-28 9 views
0

ソルトスタックからデプロイするWindowsサービスがあります。 「:サービスは既に存在します。SVC1の例外は」状態は私がサービスを再デプロイするとき、それは言う、今、このソルトスタック(サービスの場合)

create_executable: 
    module.run: 
    - name: service.create 
    - m_name: SVC1 
    - bin_path: d:\svc1.exe 
    - start_type: auto 

のように見えます。サービスが実行されているかどうかをテストする方法はありますか? s erviceが実行されている場合は、停止して無効にし、削除してから再作成したいと思います。

答えて

1

module.waitと、unless機能を使用するcmd.runがこの場合に役立つ場合があります。

サービスがインストールされていないことを確認するには、が必要です。コマンドそのものはechoのようなものかもしれません。本当に問題はありません。 watchまたはwatch_inを使用して、module.waitcmd.runに依存させることができます。

テストされていないドラフト(私はすべてのcliを窓を知らないことに注意してください):

check_if_service_installed: 
    cmd.run: 
    name: echo 'not installed' 
    unless: 'if exists c:\svc1.exe' 

create_executable: 
    module.wait: 
    - name: service.create 
    - m_name: SVC1 
    - bin_path: d:\svc1.exe 
    - start_type: auto 
    - watch: 
     - cmd: check_if_service_installed 

私は、これはあなたが達成しようとするもののために少し複雑に見えると思い書き込んだ後。たぶん、もう一度実行できるようにする小さなバッチスクリプトやPowerShellスクリプトは、より簡単です。しかし、これは味IMOの問題です。

+0

私は状態ファイルにJinja Templatesを使用することを考えていました。これは、このようなもののためにそれらを使う良い方法ですか? – NinjaGaiden

+0

この手法は、かなり頻繁に式で使用されます。これが成功すれば、あなたの結果を見るのは面白いでしょう。その場合、通常、穀類のデータを除いて、ミニオンのデータにアクセスすることはできません。だから穀物が必要かもしれません。 – dahrens

+0

ええ、私はシステムにサービスが存在するかどうかを見つけるのに苦労しています。それは存在する、利用可能な、実行中のものを区別するのが難しい。 – NinjaGaiden

関連する問題