2017-10-20 16 views
-1

私がターゲットとしているマシンは、理論上、 'marketaccess {client_name}'という個々のクライアントごとにプロセスを実行する必要があり、このプロセスが実行されていることを確認します。プロセスが実行されているかどうかを確認することは非常に困難です。以下は、特定のマシン上で実行中のプロセスがあるかどうかを確認するために使用しようとしているプレイブックです。私は 'stdout'を条件付きで実行し、顧客の名前が含まれていない場合は、指定された顧客に対して再起動プロセススクリプトを実行することを計画しています。問題は、このプレイブックを実行すると辞書オブジェクトに属性 'stdout'がないことがわかりますが、 '.stdout'を削除してもうまく動作し、service_statusのstdout値がはっきりとわかります。可能なプロセスのステータスを確認

- name: Check if process for each client exists 
    shell: ps aux | grep {{ item.key|lower }} 
    ignore_errors: yes 
    changed_when: false 
    register: service_status 
    with_dict: "{{ customers }}" 

- name: Report status of service 
    debug: 
    msg: "{{ service_status.stdout }}" 

答えて

0

あなたの問題はservice_statusは、ループタスクの結果であるということですので、すべての反復の結果が含まれているservice_status.resultsリストを持っています。

- name: Report status of service 
    debug: 
    msg: "{{ item.stdout }}" 
    with_items: "{{ service_status.results }}" 

しかし、あなたは冪等シェルタスクについてthis noteを読み、清潔なシングルタスクでコードを書き換えすることもできます。

は、あなたが使用することができ、すべての反復のため stdoutを参照してください。

+0

こんにちはコンスタンチン、ご助言ありがとうございます。このプレイブックを作成するより良い方法をお勧めしますので、プロセスをクリーンシングルタスクで個別にチェックすることができますか? –

関連する問題