ansible task内のnotify(handler)の実行タイミング
ansibleのplaybookを作成している時に、若干はまったのでメモ。
こんなplaybookを作っていました。
- 関連ライブラリストール
- 設定追加してnotifyを使って再読み込み
- 確認用にGETリクエストを投げる
干再読み込みに時間がかかるようだったので、wait_forを使って、5秒待って、portを確認するタスクを追加したんですが、設定追加があったにも関わらず、notifyの再読み込みが動作せずに、wait_forが動きだし、その後のGETリクエストももちろん失敗。
あれー?と思ってたんですが、公式をよく読むと、ちゃんと書いてありました。
notifyを書いたタスクが実行されたら、すべてのタスクが終わった後に、handlerが実行され、同じhandlerが呼ばれていたら、複数回ではなく、1回呼ばれます。
Playbooks — Ansible Documentation
These ‘notify’ actions are triggered at the end of each block of tasks in a playbook, and will only be triggered once even if notified by multiple different tasks.
そのタスクが終わった時点でhandlerが実行されるのではなかったです。てっきり、同じような処理をnotifyで関数のように呼び出せるものかと思ってました。