0Pricing
DevOps Bootcamp · レッスン

Handler の定義と再起動パターン

再利用可能なサービス再起動 Handler を作成します。

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

Handlerの定義場所

handlerはplay内の通常のタスクとは別に、独自のhandlersセクションに記述します。これにより、反応的なアクションを明確にまとめられます。

tasks:
  - name: Deploy config
    ansible.builtin.template:
      src: app.conf.j2
      dest: /etc/app.conf
    notify: Restart app
handlers:
  - name: Restart app
    ansible.builtin.service:
      name: app
      state: restarted

Handlerはタスクである

handlerではタスクとまったく同じ構文、つまりnameとモジュール呼び出しを使います。唯一の違いは、通知されるまで待機することです。

Nameが契約になる

handlerのnameは、他のタスクがnotifyで参照する文字列です。安定した正確なラベルとして扱い、繰り返し使用してください。

serviceで再起動する

典型的な再起動handlerでは、serviceモジュールのstateにrestartedを設定します。これにより、unitを1つの手順で停止して起動できます。

- name: Restart nginx
  ansible.builtin.service:
    name: nginx
    state: restarted

ReloadとRestartの違い

サービスが対応している場合はreloadedを優先してください。reloadは接続を切断せずに設定を再読み込みしますが、完全なrestartでは接続が切断されます。

- name: Reload nginx
  ansible.builtin.service:
    name: nginx
    state: reloaded

systemdを直接使う

systemdモジュールを使うと、systemdホスト上でより細かく制御できます。unitファイルを変更した後のdaemon_reloadなども実行できます。

- name: Restart app
  ansible.builtin.systemd:
    name: app
    state: restarted
    daemon_reload: true

Handlerを汎用的に保つ

再利用可能なnginxを再起動handlerを1つ作り、多くのタスクからnotifyしてください。同じ再起動ロジックをあちこちにコピーするのは避けます。

Handlerは定義順に実行される

複数のhandlerがキューに入った場合、notifyされた順ではなく、定義された順に実行されます。その順序を計画してください。

依存関係では順序が重要

reloadをrestartより先に実行する必要がある場合は、キューが正しく処理されるよう、handlersリストでその順序に定義してください。

Role内のHandler

roleでは、handlerをhandlers/main.ymlに記述します。role内のタスクは、通常のplaybookと同じように名前でnotifyします。

明確さを意識した命名

nginxを再起動やsshdをreloadのようなアクション形式の名前を使ってください。明確な名前にすると、出力が読みやすくなり、notifyの行も分かりやすくなります。

クイックチェック

設定を変更し、接続を切断せずに実行中のサービスへ反映したいとします。どのstateが最適でしょうか。

まとめ

これで、handlersセクションでhandlerを定義し、restartとreloadを使い分け、定義順で実行される仕組みを利用できるようになりました。🎯

よくある質問

「Handler の定義と再起動パターン」レッスンは無料ですか?

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

「Handler の定義と再起動パターン」で何を学びますか?

再利用可能なサービス再起動 Handler を作成します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「Handler の定義と再起動パターン」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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