2017-10-18 29 views
0

私は、特定のプロセスがホストマシン上で実行されているかどうかを確認する小さなプレイブックを作成しました。私はこの脚本を実行するとプロセスが実行されているかどうかを確認する

enter image description here

しかし:

- name: checking process running for clients and start process when not 
    service: 
    name: marketaccess {{ item.key|lower }} -vi 
    state: started 
    register: process 
    with_dict: "{{ customers }}" 

とき辞書のitem.key = BROADWAYと、次のように私はチェックしようとしているプロセスがある:私は次のようにこれを書かれています報告されたエラーは次のとおりです。

はブロードウェイ-vi要求されたサービスのmarketaccesが見つかりませんでした:ホスト

私が間違っていることを誰かが見ることができますか?

+0

[**コードやエラーの画像を投稿しないでください!**](https://meta.stackoverflow.com/q/303812/995714)画像やスクリーンショットがポストに素晴らしい追加することができ、投稿がまだ明確かつ有用でないことを確認してください。コードの画像やエラーメッセージを投稿する場合は、実際のコード/メッセージを直接コピーして貼り付けてください。 – Rob

答えて

0

私が間違っていることを誰かが見ることができますか?

Serviceは、計算においてprocessと同じではありません。

Ansibleでプロセスを管理/チェックするモジュールはありません。 shellモジュールの質問に含まれているコマンド(thisに注意してください)を使用して結果を登録し、プロセスを開始するタスクを実行できます。

しかし、marketaccessが実際にはサービスであるか、または別のサービスが子プロセスを作成している可能性もあります。伝える方法はありません。ソフトウェアのマニュアルを参照してください。

service moduleには、argumentsというパラメータを指定できます。

+0

Hi techraf、サービスではなく実行中のプロセスをチェックするモジュールが存在するかどうかを知っていますか? –

+0

あなたのアドバイスありがとうございます! –

0

「ps -ef」の出力がサーバー間で(少なくとも私の場合は)異なるため、私はpgrepを使用しました。

- name: "Get process PID" 
    shell: > 
    echo -n 
    $(pgrep {{ item.binary_name }}) 
    args: 
    executable: "{{ shell_path }}" 
    register: my_procs 
関連する問題