Handler の実行タイミングと flush_handlers
Play 終了時の Handler の実行タイミングを制御します。
「Handler の実行タイミングと flush_handlers」はCoddyKit上の無料Ansible Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAnsible Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ansible Academyコースには全4レッスンが含まれています。
Handlerは最後に実行される
デフォルトでは、notifyされたすべてのhandlerが、すべてのタスクの完了後、playのまさに最後に1回実行されます。notifyされた瞬間ではありません。
なぜ遅延させるのか
遅延させることで、多くの設定変更があってもサービスを1回だけ再起動できます。playの途中で不要な再起動が発生せず、時間も節約できます。
全体ではなくホスト単位
handlerのタイミングはホストごとに管理されます。各ホストは他のホストとは独立して、playの最後に自分のキューに入ったhandlerを実行します。
遅すぎる再起動の問題
後続のタスクで、サービスがすでに再起動している必要がある場合があります。playの最後まで待つと遅すぎるため、早い段階でflushする必要があります。
flush_handlersを使う
flush_handlersメタタスクを使うと、保留中のすべてのhandlerをその場で、playの途中に強制的に実行できます。
- name: Run queued handlers now
ansible.builtin.meta: flush_handlersmetaタスクである
flush_handlersは、リモートホストに変更を加えるのではなく、Ansible自体を制御する特殊なmetaアクションです。
典型的な使用例
設定を変更し、flushしてサービスを再起動した後、再起動直後のサービスに対してスモークテストタスクを実行します。
- name: Update config
ansible.builtin.template:
src: app.j2
dest: /etc/app.conf
notify: Restart app
- ansible.builtin.meta: flush_handlers
- name: Check health
ansible.builtin.uri:
url: http://localhost/health失敗とHandler
playの最後に到達する前にホストが失敗すると、通常、そのホストの保留中のhandlerは実行されません。早い段階でflushする方が安全な場合があるのは、そのためです。
安全策としてのforce_handlers
playでforce_handlersをtrueに設定すると、後でホストが失敗しても、キューに入ったhandlerを実行できます。クリーンアップのための再起動などに便利です。
- hosts: web
force_handlers: true
tasks:
- ...Flushは控えめに使う
順序上どうしても必要な場合だけflush_handlersを使ってください。使いすぎると、handlerがもたらすまとめて実行する利点が失われます。
タイムライン
タスクは上から下へ実行され、handlerはキューで待機し、その後、早めにflushしない限りplayの最後にまとめて実行されます。⏱️
クイックチェック
後続のタスクでサービスを利用できるよう、playの途中でサービスを再起動する必要があります。何を使うでしょうか。
まとめ
handlerは通常、ホストごとにplayの最後に1回実行されます。flush_handlersを使えば早い段階で実行でき、force_handlersを使えば失敗時にも実行できます。🚀
よくある質問
「Handler の実行タイミングと flush_handlers」レッスンは無料ですか?
はい。「Handler の実行タイミングと flush_handlers」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ansible Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ansible Academyコースには全4レッスンが含まれています。
「Handler の実行タイミングと flush_handlers」で何を学びますか?
Play 終了時の Handler の実行タイミングを制御します。 ブラウザで直接実行するハンズオンコードでAnsible Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ansible Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAnsible Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Handler の実行タイミングと flush_handlers」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAnsible Academyレッスンでコードを書いて実行できますか?
はい。すべてのAnsible Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 変更時に Handler を通知する
- Handler の定義と再起動パターン
- Handler の実行タイミングと flush_handlers
- Listen:1つのトリガーから複数の Handler へ