0Pricing
DevOps Bootcamp · レッスン

変更時に Handler を通知する

タスクから Handler を実行できるように接続します。

「変更時に Handler を通知する」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

必要なときだけ再起動する

毎回の実行でサービスを再起動するのは、無駄であり危険でもあります。handlerを使えば、実際に何かが変更されたときだけ再起動できます。

Handlerとは

handlerは、通常のタスクから実行を指示されるまで待機するタスクです。シグナルを待つアクションと考えるとよいでしょう。

notifyキーワード

notifyキーワードを使って、タスクとhandlerを接続します。値には、起動するhandlerの正確な名前を指定します。

- name: Copy nginx config
  ansible.builtin.copy:
    src: nginx.conf
    dest: /etc/nginx/nginx.conf
  notify: Restart nginx

名前は一致させる

notify内の文字列は、handlerの名前と一字一句一致しなければなりません。タイプミスがあると、handlerは何も通知されず実行されません。

changedのときにnotifyされる

handlerが通知されるのは、そのタスクがchangedを返したときだけです。タスクがすでに望ましい状態であれば、何もトリガーされません。

okならnotifyされない

タスクがokを返すと、Ansibleはnotifyを完全にスキップします。そのため、2回目の実行では通常何も再起動されません。✅

1つのタスクから複数にnotifyできる

notifyにリストを指定すると、1つのタスクから複数のhandlerに通知できます。タスクに変更があったとき、指定した各handlerがキューに入ります。

  notify:
    - Restart nginx
    - Reload firewall

通知はキューに入る

通知してもhandlerがすぐに実行されるわけではありません。Ansibleはhandlerをキューに入れ、playのタスクが完了した後で実行します。

各handlerは1回だけ実行される

5つのタスクが同じhandlerにnotifyしても、そのhandlerは1回しか実行されません。Ansibleがキューに入った通知を自動的に重複排除するためです。

これでダウンタイムを減らせる理由

再起動が実際の変更時にだけ行われるため、変更のないサーバーはサービスを提供し続けられます。これが安全で冪等性のある自動化の核心です。

全体像

タスクがファイルを変更すると、notifyによって再起動がキューに入ります。タスクが完了した後、handlerがサービスを再起動します。無駄がなく、最小限の仕組みです。

クイックチェック

notifyされたhandlerが実際にトリガーされるのはいつでしょうか。

まとめ

notifyによってタスクとhandlerが接続され、変更があったときだけhandlerが実行されることを学びました。名前は一致させる必要があり、Ansibleは各handlerを1回だけ実行するようキューに入れます。🚀

よくある質問

「変更時に Handler を通知する」レッスンは無料ですか?

はい。「変更時に Handler を通知する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「変更時に Handler を通知する」で何を学びますか?

タスクから Handler を実行できるように接続します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「変更時に Handler を通知する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

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

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