0Pricing
Ansible Academy · レッスン

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_handlers

metaタスクである

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 変更時に Handler を通知する
  2. Handler の定義と再起動パターン
  3. Handler の実行タイミングと flush_handlers
  4. Listen:1つのトリガーから複数の Handler へ
← Ansible Academyに戻る