Ansible changed_whenでタスクの変更条件を定義するサンプル
環境
Red Hat Enterprise Linux release 9.2 (Plow)
Ansible 2.14.2
Python 3.11.2
概要
changed_when: result.rc == 値
タスクを実行した結果、対象ホストの状態が変化した場合にステータスが changed 状態になる
changed_when を使用するとタスクの状態が変化したと判断する条件を設定できる
操作例
diff コマンドのリターンコードは差異がなければ 0 、差異があれば 1 、エラーが発生したら 2 です。
リターンコードが 1 のときは changed 、2 のときは failed になります。
$cat testa
study
$cat testb
skill
1.ymlファイルの定義testcc.yml
- hosts: server gather_facts: no tasks: - name: ファイルを比較し、異なるときは notify する shell: diff /opt/ansible/testa /opt/ansible/testb register: result changed_when: result.rc == 1 failed_when: result.rc > 1 notify: "file changed" handlers: - name: ファイルに差異があったときの処理 debug: msg: "ファイルに差異が見つかりました" listen: "file changed"
実行結果
$ansible-playbook -i hosts testcc.yml PLAY [server] *********************************************************************************************************************************************** TASK [ファイルを比較し、異なるときは notify する] *********************************************************************************************************** changed: [192.168.213.129] RUNNING HANDLER [ファイルに差異があったときの処理] ********************************************************************************************************** ok: [192.168.213.129] => { "msg": "ファイルに差異が見つかりました" } PLAY RECAP ************************************************************************************************************************************************** 192.168.213.129 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0