今回はAnsibleでhandlers
とnotify
を使って更新があった場合にのみ実行される処理をためしてみたいと思います。
handlersとは?
handlersとはchangedになった場合にのみ実行するタスクを記載できるセクションです。
playbook例
たとえば、以下のplaybookの場合、./temp/wawawa.txt
にコピーを実行し、wawawa.txtに変化がった場合のみ、handlers
のmake_wawawa_file
の処理が実行されます。
実際にやってみる
./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-1520252399.96-18679290845108/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-1520252400.64-10450162191451/source", "state": "file", "uid": 1000} PLAY RECAP ************************************************************************************************************************************************************************* localhost : ok=3 changed=2 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
おわりに
じゃっかん例がわるいようなきがしますけれど便利ですよhandlers
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (2件) を見る