Ansibleでは、ハンドラーは他のタスクと同じですが、呼び出されたとき、または通知されたときにのみ実行されます。管理対象ホストで変更が行われると、アクションが実行されます。ハンドラーは、インストール後にサービスを開始または再起動したり、構成ファイルにいくつかの変更を加えた後にサービスを再ロードしたりするなど、二次的な変更を開始する際に使用されます。このガイドでは、Ansibleハンドラーについて詳しく説明します。 AnsiblePlaybookでハンドラーを使用する方法を学習します。
ハンドラーを使用したAnsibleプレイブックファイル
ハンドラーがどのように機能するかをよりよく理解するために、Apache Webサーバーをインストールし、後でApacheサービスを再起動するプレイブックファイル(install_apache.yml)の例を取り上げます。以下の例では、ハンドラーはインストール後すぐにApacheサービスを再起動するように通知されます。これは、示されているように通知モジュールを使用して実現されます。 「通知」名は、指摘されているハンドラー名と一致している必要があることに注意してください。一致していないと、プレイブックファイルでエラーが発生します。
<前> ----ホスト:ステージング名:なるのインストール:はいタスクは: - 名前:aptのUbuntuのサーバー上のApache2をインストールします。名前:apache2の状態:現在update_cache:はいが通知: - 再起動ハンドラをapache2の: - 名前:再起動apache2のサービス:名前:apache2状態:再起動
それでは、プレイブックファイルを実行してみましょう。
$ ansible-playbook /etc/ansible/install_apache.yml -K
出力から、タスクの直後に実行されているハンドラーを確認できます。
複数のハンドラーを持つ複数のタスク
さらに、複数のハンドラーを呼び出す複数のタスクを持つことができます。以下のプレイブックファイルを検討してください。
実行するタスクは次の2つです。
- ApacheWebサーバーのインストール
- UFWファイアウォールでHTTPトラフィックを許可します。
タスクが正常に実行された後、以下に示すように、「notify」モジュールを使用して各ハンドラーを呼び出しました。最初のハンドラーはApacheを再起動し、2番目のハンドラーはUFWファイアウォールをリロードします。
<前> ----ホスト:ステージング名:インストールになる:はいタスク: - 名前:aptのUbuntuのサーバー上のApache2をインストールします。名前:apache2の状態:現在update_cache:はい - 名前:UFW上のHTTPトラフィックがUFWファイアウォール許可:ルール:許可ポート:HTTPプロト:通知TCP: - 再起動のapache2 - リロードUFWファイアウォールハンドラ: - 名前:再起動apache2のサービス:名:apache2の状態:再起動 - 名前:リロードUFWファイアウォールUFW:状態:有効
プレイブックファイルが実行されると、Apacheがインストールされ、ファイアウォールでHTTPトラフィックが許可された直後に、両方のハンドラーがAnsibleによって実行されます。
ここでハンドラーによって実行される2次アクションは次のとおりです。
- Apacheの再起動
- 変更を有効にするためにファイアウォールを有効にして再読み込みします。
結論
ご覧のとおり、ハンドラーは通常のタスクと同じですが、「通知」と呼ばれるグローバルに一意のモジュールを使用して参照される点が異なります。ハンドラーに通知がない場合、ハンドラーは実行に失敗します。すべてのハンドラーは、すべてのタスクが完了した後に実行されることに注意してください。
また読む : Ansibleロールを作成し、Playbookで使用する方法