0Pricing
DevOps Bootcamp · レッスン

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 stack

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

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

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