概要
さて、今回もAnsibleのhandlersセクションのおはなしです。
handlersセクションではタスクに更新(changed)があった場合にのみ実行することができるセクションです。
いままではhandlersには一つのタスクしか紐付けることができませんでしたが、Ansible ver2.2 からlisten
を利用することでhandlersで複数のタスクを実行することができるようになりました!
playbook例
たとえば、以下のplaybookの場合、./temp/wawawa.txt
にコピーを実行し、wawawa.txtに変化がった場合のみ、handlers
のmake_wawawa_file
とmake_wawawa_file2
の処理が実行されます。
実際にやってみる
./temp
配下になにもない状態のときは、以下のような実行結果になります。
RUNNING HANDLER [make_wawawa_file]
が実行されていることがわかります。
$ ls -l ./temp/ total 0 $ ansible-playbook -i ansible_hosts handler.yml -v PLAY [localhost] ******************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************* ok: [localhost] TASK [copy_file] ******************************************************************************************************************************************************************* changed: [localhost] => {"changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "./temp/wawawa.txt", "gid": 1000, "group": "ec2-user", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0664", "owner": "ec2-user", "size": 0, "src": "/home/ec2-user/.ansible/tmp/ansible-tmp-1520252948.16-195042225691797/source", "state": "file", "uid": 1000} RUNNING HANDLER [make_wawawa_file] ************************************************************************************************************************************************* changed: [localhost] => {"changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "./temp/wawawa_result.txt", "gid": 1000, "group": "ec2-user", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0664", "owner": "ec2-user", "size": 0, "src": "/home/ec2-user/.ansible/tmp/ansible-tmp-1520252948.85-42002962767209/source", "state": "file", "uid": 1000} RUNNING HANDLER [make_wawawa_file2] ************************************************************************************************************************************************ changed: [localhost] => {"changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "./temp/wawawa_result2.txt", "gid": 1000, "group": "ec2-user", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0664", "owner": "ec2-user", "size": 0, "src": "/home/ec2-user/.ansible/tmp/ansible-tmp-1520252949.29-14013734563506/source", "state": "file", "uid": 1000} PLAY RECAP ************************************************************************************************************************************************************************* localhost : ok=4 changed=3 unreachable=0 failed=0
つづけざまにもう一度コマンドを実行すると、wawawa.txtには変化はないので、以下のようにhundlers
は実行されません。
$ ansible-playbook -i ansible_hosts handler.yml -v PLAY [localhost] ******************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************* ok: [localhost] TASK [copy_file] ******************************************************************************************************************************************************************* ok: [localhost] => {"changed": false, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "gid": 1000, "group": "ec2-user", "mode": "0664", "owner": "ec2-user", "path": "./temp/wawawa.txt", "size": 0, "state": "file", "uid": 1000} PLAY RECAP ************************************************************************************************************************************************************************* localhost : ok=2 changed=0 unreachable=0 failed=0
おわりに
2日連続同じ記事感handlers
- 作者: Lorin Hochstein,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/04/16
- メディア: 大型本
- この商品を含むブログ (2件) を見る