1.5. Ansible Automation Platform の統合と導入
Red Hat Advanced Cluster Management は Red Hat Ansible Automation Platform と統合されているため、Git サブスクリプションアプリケーション管理用のプリフックおよびポストフック AnsibleJob
インスタンスを作成できます。コンポーネントと Ansible Automation Platform の設定方法について学びます。
必要なアクセス権限: クラスターの管理者
1.5.1. 統合とコンポーネント
Ansible Automation Platform ジョブを Git サブスクリプションに統合できます。たとえば、データベースのフロントエンドおよびバックエンドアプリケーションの場合、Ansible Automation Platform ジョブで Ansible Automation Platform を使用してデータベースをインスタンス化する必要があります。アプリケーションは、Git サブスクリプションによってインストールされます。サブスクリプションを使用してフロントエンドおよびバックエンドアプリケーションをデプロイする 前 に、データベースはインスタンス化されます。
アプリケーションのサブスクリプション Operator は、prehook
および posthook
の 2 つのサブフォルダーを定義できるように強化されています。いずれのフォルダーも Git リポジトリーリソースのルートパスにあり、それぞれ Ansible Automation Platform ジョブのプリフックおよびポストフックがすべて含まれています。
Git サブスクリプションが作成されると、プリフックおよびポストフックのすべての AnsibleJob
のリソースがすべて解析され、オブジェクトとしてメモリーに保存されます。アプリケーションのサブスクリプションコントローラーは、プリフックおよびポストフックの AnsibleJob
インスタンスを作成するタイミングを決定します。
サブスクリプションカスタムリソースを作成すると、Git ブランチおよび Git パスは Git リポジトリーのルートの場所を参照します。Git のルート内の 2 つのサブフォルダー (prehook
および posthook
) には最低でも Kind:AnsibleJob
リソース 1 つが含まれている必要があります。
1.5.1.1. Prehook
アプリケーションサブスクリプションコントローラーは、プリフックフォルダー内のすべての kind:AnsibleJob
CR をプリフックの AnsibleJob
オブジェクトとして検索し、新しいプリフックの AnsibleJob
インスタンスを生成します。新しいインスタンス名はプリフックの AnsibleJob
オブジェクト名とランダムな接尾辞文字列です。
インスタンス名の例 database-sync-1-2913063
を参照してください。
アプリケーションサブスクリプションコントローラーは、調整要求を 1 分間のループで再度キューに追加します。プリフックの AnsibleJob
status.AnsibleJobResult
をチェックします。プリフックステータスが successful
の場合、アプリケーションサブスクリプションは主要なサブスクリプションを引き続きデプロイします。
1.5.1.2. posthook
アプリケーションのサブスクリプションステータスが更新されると、サブスクリプションのステータスが Subscribed か、ステータスが Subscribed の全ターゲットクラスターに伝播された場合に、アプリケーションのサブスクリプションコントローラーは posthook AnsibleJob
オブジェクトとして、posthook フォルダーの全 AnsibleJob
kind
CR を検索します。次に、posthook AnsibleJob
インスタンスを新たに生成します。新しいインスタンス名には、posthook AnsibleJob
のオブジェクト名、その後に無作為に指定した接尾辞の文字列を指定します。
インスタンス名の例 service-ticket-1-2913849
を参照してください。
1.5.1.3. Ansible Automation Platform の配置ルール
有効なプリフックの AnsibleJob
では、サブスクリプションは配置ルールの決定事項に関係なく、プリフックの AnsibleJob
を起動します。
たとえば、配置ルールサブスクリプションの伝播に失敗したプリフックの AnsibleJob
を起動できます。配置ルールの意思決定が変更すると、新しいプリフックおよびポストフックの AnsibleJob
インスタンスが作成されます。
{aap_short} を有効にするには、次のトピックを参照してください。
1.5.2. Ansible Automation Platform のセットアップ
Ansible Automation Platform ジョブを使用すると、タスクを自動化し、Slack や PagerDuty サービスなどの外部サービスと統合できます。Git リポジトリーのリソースルートパスには、アプリケーションのデプロイ、アプリケーションの更新、またはクラスターからのアプリケーションの削除の一部として実行される Ansible Automation Platform ジョブの prehook
および posthook
ディレクトリーが含まれます。
必要なアクセス権限: クラスターの管理者
1.5.2.1. 前提条件
- OpenShift Container Platform 4.6 以降をインストールします。
- Ansible Automation Platform をインストールします。サポートされている最新バージョンをインストールするには、Red Hat Ansible Automation Platform ドキュメントを参照してください。
- Ansible Automation Platform Resource Operator をインストールして、Ansible Automation Platform ジョブを Git サブスクリプションのライフサイクルに接続する。ベストプラクティス: Ansible Automation Platform ジョブテンプレートは、実行時、べき等である必要があります。
-
INVENTORY
とEXTRA VARIABLES
の両方について、テンプレートのPROMPT ON LAUNCH
を確認する。詳細は、Job templates を参照してください。
1.5.2.2. Ansible Automation Platform Resource Operator のインストール
- OpenShift Container Platform クラスターコンソールにログインします。
- コンソールナビゲーションで OperatorHub をクリックします。
Ansible Automation Platform Resource Operator を検索し、インストールします。注記: プリフックおよびポストフックの
AnsibleJobs
を送信するには、Red Hat Ansible Automation Platform Resource Operator を以下の OpenShift Container Platform バージョンで利用可能な対応するバージョンとともにインストールします。- OpenShift Container Platform 4.8 には (AAP) リソース Operator の早期アクセス、stable-2.1、stable-2.2 が必要です
- OpenShift Container Platform 4.9 には (AAP) リソース Operator の早期アクセス、stable-2.1、stable-2.2 が必要です
- OpenShift Container Platform 4.10 以降には、(AAP) Resource Operator stable-2.1、stable-2.2 が必要です。
その後、コンソールの Credentials ページから認証情報を作成できます。Add credential をクリックするか、ナビゲーションからページにアクセスします。認証情報については、Ansible Automation Platform の認証情報の作成 を参照してください。
1.5.3. Ansible Automation Platform の設定
With {aap-short} jobs, you can automate tasks and integrate with external services, such as Slack and PagerDuty services. Your Git repository resource root path will contain `prehook` and `posthook` directories for {aap-short} jobs that run as part of deploying the application, updating the application, or removing the application from a cluster.
必要なアクセス権限: クラスターの管理者
Ansible Automation Platform 設定は、以下のタスクで行うことができます。
1.5.3.1. Ansible Automation Platform シークレットの設定
Ansible Automation Platform シークレットカスタムリソースを同じサブスクリプション namespace に作成する必要があります。Ansible Automation Platform シークレットは、同じサブスクリプション namespace に制限されています。
Ansible Automation Platform secret name
セクションに入力して、コンソールからシークレットを作成します。ターミナルを使用してシークレットを作成するには、サンプルのyaml
ファイルを編集して適用します。注記:
namespace
は、サブスクリプションの namespace と同じにします。stringData:token
とhost
は、Ansible Automation Platform のものです。apiVersion: v1 kind: Secret metadata: name: toweraccess namespace: same-as-subscription type: Opaque stringData: token: ansible-tower-api-token host: https://ansible-tower-host-url
以下のコマンドを実行して YAML ファイルを追加します。
oc apply -f
アプリケーションサブスクリプションコントローラーがプリフックおよびポストフックの Ansible ジョブを作成する際、サブスクリプション spec.hooksecretref
からのシークレットが利用可能な場合、それは AnsibleJob
カスタムリソース spec.tower_auth_secret
に送信され、AnsibleJob
は Ansible Automation Platform にアクセスできます。
1.5.3.2. シークレット調整の設定
プリフックおよびポストフックの AnsibleJob
を使用するメインのサブサブスクリプションの場合、すべてのプリフックおよびポストフックの AnsibleJob
またはメインのサブスクリプションが Git リポジトリーで更新された後、メイン/サブのサブスクリプションを調整する必要があります。
プリフックの AnsibleJob
とメインのサブスクリプションは新しいプリフックの AnsibleJob
インスタンスを継続的に調整および再起動します。
-
プリフックの
AnsibleJob
が完了したら、メインのサブスクリプションを再実行します。 - メインのサブスクリプションに仕様変更がある場合は、サブスクリプションを再デプロイします。再デプロイメントの手順に合わせて、メインのサブスクリプションステータスを更新する必要があります。
ハブクラスターのサブスクリプションステータスを
nil
にリセットします。サブスクリプションは、ターゲットクラスターにサブスクリプションをデプロイするときに合わせて更新されます。ターゲットクラスターへのデプロイメントが終了すると、ターゲットクラスターのサブスクリプションステータスが
"subscribed"
または"failed"
になり、ハブクラスターのサブスクリプションステータスに同期されます。-
メインのサブスクリプションが完了したら、新しいポストフックの
AnsibleJob
インスタンスを再起動します。 サブスクリプションが更新されていることを確認します。以下の出力を参照してください。
-
subscription.status ==
"subscribed"
-
subscription.status ==
"propagated"
with all of the target clusters"subscribed"
-
subscription.status ==
AnsibleJob
カスタムリソースが作成されると、ターゲットの Ansible Automation Platform と通信することによって、Ansible Automation Platform ジョブを起動するために、Kubernetes ジョブのカスタムリソースが作成されます。ジョブが完了すると、ジョブの最終ステータスが AnsibleJob
status.AnsibleJob Result
に戻ります。
注記:
AnsibleJob
status.conditions
は、Kubernetes ジョブの結果の作成を保存するために、Ansible Automation Platform Job Operator によって予約されています。status.conditions
は実際の Ansible Automation Platform ジョブのステータスを反映していません。
サブスクリプションコントローラーは、AnsibleJob.status.conditions
ではなく、AnsibleJob.status.AnsibleJob.Result
によって、Ansible Automation Platform ジョブのステータスをチェックします。
プリフックおよびポストフックの AnsibleJob
ワークフローで前述したように、メインのサブスクリプションが Git リポジトリーで更新されると、新しいプリフックおよびポストフックの AnsibleJob
インスタンスが作成されます。その結果、1 つのメインサブスクリプションが複数の AnsibleJob
インスタンスにリンクできます。
subscription.status.ansiblejobs
には、4 つのフィールドが定義されています。
-
lastPrehookJobs
: 最新のプリフックの Ansible ジョブ -
prehookJobsHistory
: プリフックの Ansible ジョブのすべての履歴 -
lastPosthookJobs
: 最新のポストフックの Ansible ジョブ -
posthookJobsHistory
: ポストフックの Ansible ジョブのすべての履歴
1.5.3.3. Ansible Automation Platform サンプル YAML ファイルの使用
Git prehook および posthook フォルダー内の AnsibleJob
YAML ファイルの次のサンプルを参照してください。
apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: demo-job-001 namespace: default spec: tower_auth_secret: toweraccess job_template_name: Demo Job Template extra_vars: cost: 6.88 ghosts: ["inky","pinky","clyde","sue"] is_enable: false other_variable: foo pacman: mrs size: 8 targets_list: - aaa - bbb - ccc version: 1.23.45 job_tags: "provision,install,configuration" skip_tags: "configuration,restart"
1.5.3.4. ワークフローの起動
AnsibleJob
カスタムリソースを使用して Ansible Automation Platform ワークフローを起動するには、次の例に示すように、job_template_name
フィールドを workflow_template_name
に置き換えます。
1.5.3.5. Ansible Automation Platform のサンプル YAML ワークフローの使用
Git prehook および posthook フォルダー内の Workflow AnsibleJob
YAML ファイルの次のサンプルを参照してください。
apiVersion: tower.ansible.com/v1alpha1 kind: AnsibleJob metadata: name: demo-job-001 namespace: default spec: tower_auth_secret: toweraccess workflow_template_name: Demo Workflow Template extra_vars: cost: 6.88 ghosts: ["inky","pinky","clyde","sue"] is_enable: false other_variable: foo pacman: mrs size: 8 targets_list: - aaa - bbb - ccc version: 1.23.45
Ansible ワークフローの詳細については、ワークフロー を参照してください。