10.4. Webhook の使用
Webhook は、Web 上のアプリ間で指定されたコマンドを実行する機能を提供します。Ansible 自動化コントローラーは現在、GitHub および GitLab との Webhook インテグレーションを提供しています。このリファレンス環境では、GitHub を使用して自動化コントローラーで Webhook を設定する手順について説明します。
10.4.1. GitHub Webhook の設定
自動化コントローラーには、トリガーされた Webhook イベントに基づいてジョブを実行する機能があります。以下に、その設定手順を示しています。
GitHub パーソナルアクセストークンの作成
自動化コントローラーで使用するパーソナルアクセストークン (PAT) を生成します。
- GitHub アカウントのプロファイル設定で、Settings をクリックします。
Personal 設定の下の Developer Settings をクリックします。

- Developer 設定で Personal access tokens をクリックします。
- Personal アクセストークンの画面から、Generate new token ボタンをクリックします。
- プロンプトが表示されたら、GitHub アカウントのパスワードを入力して続行します。
- Note フィールドに、この PAT の用途に関する簡単な説明を入力します。
- Expiration ドロップダウンで、No expiration を選択します。
Scope フィールドでは、自動化コントローラー Webhook はリポジトリースコープへのアクセスのみ (ただし招待を除く) 必要とします。その他のスコープについては、表のすぐ上にあるリンクをクリックしてドキュメントにアクセスしてください。

ページの下部にある Generate Token ボタンをクリックします。
警告トークンが生成されたら、必ず PAT をコピーしてください。後の手順で Ansible Automation Platform 自動化コントローラークラスターが使用します。GitHub でこのトークンに再度アクセスすることはできなくなります。
GitHub リポジトリーの作成
PAT を配置したら、次の手順として、リポジトリーが変更されると GitHub Webhook によってトリガーされる Git リポジトリーを作成します。
自動化コントローラーの設定を簡単に更新または変更できるようにすることに重点が置かれているため、このリファレンス環境では redhat_cop.controller_configuration という名前の Ansible コレクションを利用します。
この Ansible コレクションを使用すると、コントローラーコレクションモジュールを使用し、Ansible ロールを介して Ansible コントローラーサーバーと簡単に対話できます。
このコレクションを使用することで、これらの既存のロールを使用して、すべてのサイトで自動化コントローラー環境を変更または更新できます。
redhat_cop.controller_configuration コレクションはコミュニティープロジェクトであり、Red Hat では正式にサポートされていません。
GitHub で、new repository を作成します。
適切な 所有者を選択し、リポジトリー名を指定します。
- このリファレンス環境では、リポジトリー名として aap_refarch を使用します。
- リポジトリーを説明するためのオプションの説明を提供します。
リポジトリーをパブリックまたはプライベートに設定します。
- このリファレンス環境では、リポジトリーをパブリックに設定します。
- Add a README file を使用してリポジトリーを初期化します。
- create repository ボタンをクリックします。
新しく作成された GitHub リポジトリー内に、3 つのファイルが作成されます。
- playbook.yml - 自動化コントローラーを更新または変更するためのすべての適切なロールを備えた Playbook。
- requirements.yml - Playbook の実行に必要なすべてのコレクションを備えた requirements.yml。
- group_vars/all.yml - 特定の設定 (ロール) 用に変更するすべての変数を含む all.yml ファイル。
これらの 3 つのファイルの目的は、group_vars/all.yml が変更されてリポジトリーに更新されたときに、Ansible Automation Platform 自動化コントローラークラスター内のジョブテンプレートを開始して、適切な変更または更新を行うメソッドを提供することです。
これらの 3 つのファイルのサンプルは、このガイドの 付録C 補足 セクションか、https://github.com/ansible/aap_refarch にあります。
Ansible Automation Platform 自動化コントローラークラスター内におけるリソース認証情報の設定
リポジトリーを Configuration as Code として使用する前に、Ansible Automation Platform サイト内に適切な認証情報リソースを設定します。
これにより、新しいプロジェクト、ワークフロー、およびジョブテンプレートが作成されたときに、それらのリソースに認証情報をかんたんに割り当てることができるようになります。
次の手順は、2 つの必須認証情報を作成する方法を示しています。
1 つは以前に作成した GitHub (PAT) トークンに関連付けられた認証情報です。
もう 1 つは、更新される Ansible Automation Platform サイトに関連付けらている認証情報です。各 Ansible Automation Platform サイトは、独自の環境によって更新されます。たとえば、サイト 1 はサイト 1 によって更新されます。
それぞれの Ansible Automation Platform サイトで、以下を実行します。
- Ansible Automation Platform 自動化コントローラーダッシュボードにログインします。
Resources→ Credentials で、青色の Add ボタンをクリックします。
- Name を入力します (例: GitHub PAT)。
- Credential Type として GitHub Personal Access Token を選択します。
- Type Details で、以前に GitHub から生成されたトークンを使用してシークレットを追加します。
Save をクリックします。
注記GitHub にポストバックするジョブテンプレートで使用するので、この認証情報の名前をメモしてください。
GitHub PAT ク認証情報セットを使用して、既存の Ansible Automation Platform 環境の用に 2 つめの認証情報を作成します。
Resources→ Credentials で、青色の Add ボタンをクリックします。
- Name を入力します (例: AAP_Site1)。
- Credential Type として Red Hat Ansible Automation Platform を入力します。
Type Details 内に、適切な詳細を追加します。
- Red Hat Ansible Automation Platform (例: controlplane-cluster.site1.example.com)
- Username (例: admin)
- Password (例: redhat)
- SSL 証明書が署名されている場合は、Options 内の Verify SSL を選択します。
- Save をクリックします。
Ansible Automation Platform サイト 2 でこのセクションを繰り返します。
このリファレンス環境はロードバランサーを利用するため、controlplane-cluster.site1.example.com が使用されます。ロードバランサーの設定は、このリファレンス環境の範囲外です。
Configuration as Code プロジェクトの作成
Configuration as Code プロジェクトの目的は、Configuration as Code リポジトリーが更新されるたびに自動的に実行されるジョブテンプレートを含むワークフローを作成することです。
これにより、変数の設定などの変更を行うときに、Git リポジトリー Playbook が多数の自動化コントローラー設定に対して適切なロールを実行することが保証されます。
このセクションでは、上記を実現するためのプロジェクト、ワークフロー、およびジョブテンプレートを作成します。
Ansible Automation Platform サイト 1 のダッシュボード内で以下を行います。
- Resources→ Projects で、青色の Add ボタンをクリックします。
- Name を指定します (例: Configuration as Code Project)。
- Organization として Default を選択します。
- Execution Environment として Default execution environment を選択します
- Source Control Credential Type として Select Git を選択します。
Type Details で、以下を実行します。
- Source Control URL (GitHub リポジトリー) を追加します。
Options 内で、以下を実行します。
- Clean、Delete、Update Revision on Launch を選択します。
- Save をクリックします。
次に、ワークフローテンプレートを作成します。
- Resources→ Templates で、青色の Add → Add workflow template をクリックします。
- Name を指定します (例: Configuration as Code Workflow)。
Options で、 Enable Webhook のチェックをオンにします。
- Webhook details 内で、Webhook Service として GitHub を選択します。
- Webhook details 内で、以前に作成した GitHub PAT トークンを Webhook Credential として選択します (例: GitHub PAT)。
- Save をクリックします。
- Please click the Start button to begin ウィンドウ内で、右上隅の Save をクリックします。
- 後で使用するため、Webhook URL と Webhook Key をコピーします。
Ansible Automation Platform サイト 2 で上記のプロセスを繰り返します。
リポジトリー用 GitHub Webhook の有効化
Ansible Automation Platform ワークフローテンプレートを作成し、必要なファイルを格納した GitHub リポジトリーを配置したら、次の手順としてリポジトリー用の Webhook (例: aap_refarch) を有効にします。
- GitHub リポジトリーのホームページで、Settings タブを選択します。
Settings タブで Webhooks を選択します。

- Webhooks セクションで、Add webhook ボタンを選択します。
- Payload URL (ワークフローの Webhook URL) を入力します。
- Content type ドロップダウンを application/json に変更します。
- Secret (ワークフローの Webhook キー) を入力します。
プッシュイベントを使用するようにデフォルトのままにして、Add webhook ボタンをクリックします。
警告デフォルトでは、GitHub はペイロードを配信するときに SSL 証明書を検証します。自動化コントローラーの SSL 証明書が署名されていない場合は、必ず SSL verfication を無効にしてください。
Ansible Automation Platform サイト 2 で上記のプロセスを繰り返します。
Configuration as Code ジョブテンプレートの作成
Configuration as Code プロジェクト用に作成されるジョブテンプレートは、Git リポジトリーが更新されるたびに playbook.yml ファイルを自動的に実行します。
これにより、設定の変更が必要になったときに、Ansible Automation Platform コントローラー API を使用して適切に変更することができます。すべての Ansible Automation Platform サイトで同じ方法を組み合わせると、設定されたサイト全体ですべての変更がグローバルになります。
- Resources→ Templates で、青色の Add → Add job template をクリックします。
- Name を指定します (例: Configuration as Code Job)。
- Job Type として Run を選択します。
- Inventory として Demo Inventory を選択します。
- Project として Configuration as Code Project を選択します。
- Execution Environment として Default execution environment を選択します
- Playbook として playbook.yml を選択します。
- Credentials を選択し、カテゴリーを Machine から Red Hat Ansible Automation Platform に切り替えます。
- Ansible Automation Platform サイトの適切な認証情報 (例: AAP_Site1) を選択します。
- Options で、 Enable webhook を選択します。
- Webhook Service として GitHub を選択します。
- 以前に作成した GitHub PAT トークンを Webhook Credential として選択します (例: GitHub PAT)。
- Save をクリックします。
Ansible Automation Platform サイト 2 で上記のプロセスを繰り返します。
作成した Configuration as Code ワークフローの更新
以前は、Configuration as Code ワークフローが作成されていました。このワークフローの目的は、Configuration as Code プロジェクトが常に同期され、リポジトリーに変更が加えられるたびに Configuration as Code ジョブが Configuration as Code Playbook を実行するように保証することです。
- Resources→ Templates で、テンプレートを選択します (例: Configuration as Code Workflow)。
- Details セクションで、 Visualizer タブを選択し、緑色の Start をクリックします。
- Node Type で Project Sync を選択し、適切なプロジェクト (例: Configuration as Code Project) を選択して Save をクリックします。
- Configuration as Code Project にカーソルを合わせ、プラス (+) 記号を選択します。
- Add Node ウィンドウで、このノードを実行するタイミングとして Always を選択し、Next をクリックします。
- Node Type として Configuration as Code Job を選択し、Save をクリックします。
- Visualizer に戻ったら、右上隅にある Save ボタンを選択します。
Configuration as Code 設定の検証
多くのロールがすでに redhat_cop.controller_configuration に含まれているため、group_vars/all.yml ファイルを適切な yaml で更新してユーザーを作成すると、すべてが期待どおりに機能しているかかんたんに検証できます。
ユーザーを作成する場合は、ユーザーロールのドキュメント で、使い捨ての変数をすべて詳しく確認します。
詳細を確認し、John という名前の非管理者ユーザーを作成すると次のようになります。
group_vars/all.yml
---
controller_user_accounts:
- user: "john"
is_superuser: false
password: "redhat"
上記の操作で group_vars/all.yml ファイルが更新され、Git リポジトリーにプッシュされると、Ansible Automation Platform 自動化コントローラー内のジョブが開始されます。
これは、自動化コントローラーダッシュボードの Views セクションで Jobs を選択すると確認できます。参照するジョブには、ジョブ番号の後にジョブ名を付ける必要があります。この参照環境では、TypePlaybook Run の 8-Configuration as Code Job に似たものが表示されます。

ジョブが完了すると、ステータスは Successful になります。
管理者としてログアウトし、パスワード redhat を使用して john というユーザーとして再ログインすると、ジョブが成功したことを確認できます。
この章の内容すべてに従い Ansible Automation Platform サイトごとに Webhook を適切に設定すると、対応する Ansible Automation Platform によってユーザー john が同時に作成されたことがわかります。
これは単純化された例ですが、Ansible Automation Platform 自動化コントローラーで許可されている設定 (ロール) の多くは、redhat_cop.controller_configuration 内に提供されています。
追加の例は、Example configs で見つけることができます。
Ansible コレクションには、多くの必要となる重要なロールがありますが、Ansible コレクション内にあるものだけに限定されるわけではありません。組織が新しいロールを実装または作成して、機能をさらに強化することもできます。