Listen:1つのトリガーから複数の Handler へ
1つの通知を複数の処理へ分岐させます。
「Listen:1つのトリガーから複数の Handler へ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
1つのイベントから複数の反応
1つの変更で複数のhandlerを同時にトリガーしたい場合があります。listenキーワードを使うと、複数のhandlerを1つのトピックに登録できます。
名前ではなくトピックにnotifyする
listenを使うと、タスクのnotifyは特定のhandler名ではなく、論理的なイベント名を指定します。
- name: Update certs
ansible.builtin.copy:
src: site.pem
dest: /etc/ssl/site.pem
notify: restart web stackHandlerはlistenで登録する
各handlerに、同じトピック名を指定するlisten行を追加します。そのトピックをlistenしているすべてのhandlerが、通知を受けると実行されます。
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restarted
listen: restart web stack複数のHandler、1つのトピック
複数のhandlerに同じlisten値を指定すると、1回のnotifyですべてのhandlerが呼び出されます。まとめて再起動する場合に便利です。
- name: Restart php-fpm
ansible.builtin.service:
name: php-fpm
state: restarted
listen: restart web stackタスクとHandlerを分離する
大きな利点は分離です。タスクはトピックを参照するだけなので、notifyするタスクに触れずにhandlerを追加・削除できます。
Nameは任意だが便利
listenを使うhandlerにもnameを付けられます。これにより出力が読みやすくなり、他のタスクから直接notifyすることもできます。
1つのHandlerが複数をlistenできる
listenにリストを指定すると、1つのhandlerが複数の異なるトピックに応答します。通知されたイベントに応じて反応します。
listen:
- restart web stack
- reload tls冪等性は変わらない
トピックを使った通知にも同じルールが適用されます。handlerはchangedのときだけ実行され、各handlerはplayごとに最大1回しか実行されません。
定義順であることは変わらない
1つのトピックで複数のhandlerが起動された場合も、通常のhandlerと同様に、handlersリストで定義された順序に実行されます。
共有Roleでよく使われる
再利用可能なroleではlistenを使うことで、利用側は安定したトピックにnotifyしながら、role内部のhandler構成を自由に変更できます。
NotifyとListen
notifyはタスクからのシグナルで、listenはhandler側の購読です。この2つによって、1つのイベントを複数のアクションに変換できます。🔔
クイックチェック
1つのnotifyで3つのサービスを同時に再起動したいとします。1つのトピックに複数のハンドラーが応答できるのは、どの仕組みですか?
振り返り
listenを使うと、タスクがトピックに通知し、購読しているすべてのハンドラーが起動します。これによりタスクとハンドラーが分離され、きれいに拡張できます。🎯
よくある質問
「Listen:1つのトリガーから複数の Handler へ」レッスンは無料ですか?
はい。「Listen:1つのトリガーから複数の Handler へ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Listen:1つのトリガーから複数の Handler へ」で何を学びますか?
1つの通知を複数の処理へ分岐させます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Listen:1つのトリガーから複数の Handler へ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 変更時に Handler を通知する
- Handler の定義と再起動パターン
- Handler の実行タイミングと flush_handlers
- Listen:1つのトリガーから複数の Handler へ