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: restartedHandlerはタスクである
handlerではタスクとまったく同じ構文、つまりnameとモジュール呼び出しを使います。唯一の違いは、通知されるまで待機することです。
Nameが契約になる
handlerのnameは、他のタスクがnotifyで参照する文字列です。安定した正確なラベルとして扱い、繰り返し使用してください。
serviceで再起動する
典型的な再起動handlerでは、serviceモジュールのstateにrestartedを設定します。これにより、unitを1つの手順で停止して起動できます。
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restartedReloadとRestartの違い
サービスが対応している場合はreloadedを優先してください。reloadは接続を切断せずに設定を再読み込みしますが、完全なrestartでは接続が切断されます。
- name: Reload nginx
ansible.builtin.service:
name: nginx
state: reloadedsystemdを直接使う
systemdモジュールを使うと、systemdホスト上でより細かく制御できます。unitファイルを変更した後のdaemon_reloadなども実行できます。
- name: Restart app
ansible.builtin.systemd:
name: app
state: restarted
daemon_reload: trueHandlerを汎用的に保つ
再利用可能な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フィードバックを取得できます。ローカル設定は不要です。