Ansibleでは、ハンドルはタスクと同義ですが、ここにキャッチがあります。ハンドルは、リッスンしている別のイベントまたはタスクによって呼び出されたときにアクションを実行するようにトリガーされます。ハンドラーは主に、Webサーバーやデータベースなどの新しいサービスのインストールを進める二次的なタスクを実行するために使用されます。これらのタスクには、構成ファイルに変更が加えられた後のサービスの再起動または再ロードが含まれます。ハンドラーは実行されるだけで、タスクは通知を受け取ります ディレクティブ。
Nginxを再起動するためのハンドラーを含むAnsiblePlaybookファイル
Ansibleでのハンドラーの役割をしっかりと把握するために、 install_nginx.ymlという簡単なプレイブックファイルを作成します。 。プレイブックには、リモートUbuntuノードにNginxWebサーバーをインストールする単一のプレイが含まれています。インストール直後、通知 ディレクティブはハンドラーにNginxサービスを再起動するように指示します
「通知」の定義がハンドラーの名前と一致することに注意してください。ご覧のとおり、「Nginxを再起動」 通知の下での定義 ディレクティブは、プレイブックのハンドラーの名前と一致します。
それでは、プレイブックファイルを実行してみましょう。
$ ansible-playbook /etc/ansible/install_nginx.yml -K
以下の出力から、Ansibleが最初にタスクを実行し、次にハンドラーを実行したことがわかります。さらに、実際にはNginxのインストールとハンドラーによって実行されたNginxサービスの再起動という2つの変更が記録されていることがわかります。主なタスクはNginxのインストールであり、副次的なタスクはNginxWebサーバーの再起動でした。
複数の再生とハンドラーを含むAnsiblePlaybookファイル
さらに、プレイブックファイルに複数のプレイとハンドラーが含まれているシナリオを作成できます。
これらは私たちが持っている演劇です:
- Nginxのインストール
- UFWファイアウォールを通過するHTTPトラフィックを許可します。
再生が実行された後、notifyディレクティブは各ハンドラーを呼び出してタスクを実行します–Nginxを再起動してUFWファイアウォールをリロードします。
この例では、ハンドラーによって実行される2次タスクは次のとおりです。
- Nginxサービスの再起動
- ファイアウォールのリロード
もう一度プレイブックを実行してみましょう。
$ ansible-playbook /etc/ansible/install_nginx.yml -K
ここでは、合計4つのタスクがあります。最初の2つは演劇によって実行され、残りの2つはハンドラーによって処理されます。実行後、プレイブックには、実行された操作またはタスクの数に対応する4つの変更が記録されていることがわかります。
結論
明らかに、ハンドラーの使用は非常に単純で簡単な演習です。ハンドラーは、「通知」によって呼び出されるという点だけがタスクと同じです。 プレイブックで最後に実行されます。