2016-08-16 6 views
0

Ansibleプレイブックの一環として、サーバーが同期しているかどうかを確認したいと思います。Anatileタスクの結果がすべてのサーバーで同じかどうかを確認する方法は?

これを行うには、shellモジュールを使用して各サーバーでスクリプトを実行し、結果を変数、たとえばresult_valueに登録します。

問題は、result_valueがすべてのサーバーで同じかどうかを確認することです。期待値はあらかじめわかっていません。

これを達成するための慣用的な方法がありますか?

答えて

2

可能な方法の一つに:

--- 
- hosts: all 
    tasks: 
    - shell: /usr/bin/my_check.sh 
     register: result_value 
    - assert: 
     that: hostvars[item]['result_value'].stdout == result_value.stdout 
     with_items: "{{play_hosts}}" 
     run_once: true 
+0

は、これが唯一の最初のホストを実行していないでしょうか? –

+1

@RobertoAloiもしあなたが標準的なラン戦略を使うならば、最初の 'shell'は全てのホスト上で実行され、結果をそのホストの' result_value' varに書き出します。 'assert'は(' run_once'のために) (with_itemsのために)現在のプレイ中のすべてのホストをループし、各ホストresult_valueをそれ自身の値と比較します。 –

+2

私は最初にあなたの解決策を使ってエラーが発生しました( 'ERROR!Can not LOOKUP(dig):module dns.resolver is not installed')' pip install --upgrade dnspython'コマンドが助けになりました。 –

関連する問題