1.5. Ansible Automation Platform との統合
Red Hat Advanced Cluster Management は Red Hat Ansible Automation Platform と統合されているため、Git サブスクリプションアプリケーション管理用のプリフックおよびポストフック AnsibleJob インスタンスを作成できます。コンポーネントと Ansible Automation Platform の設定方法を学びます。
必要なアクセス権: クラスター管理者
非推奨: アプリケーション サブスクリプション と、アプリケーションサブスクリプションを使用するすべてのプロセスが非推奨になりました。更新された機能は、GitOps の概要 を参照してください。
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 を参照してください。
Ansible Automation Platform を有効にするには、次のトピックを参照してください。
1.5.2. Ansible Automation Platform のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform ジョブを使用すると、タスクを自動化し、Slack や PagerDuty サービスなどの外部サービスと統合できます。Git リポジトリーのリソースルートパスには、アプリケーションのデプロイ、アプリケーションの更新、またはクラスターからのアプリケーションの削除の一部として実行される Ansible Automation Platform ジョブの prehook および posthook ディレクトリーが含まれます。
必要なアクセス権: クラスター管理者
1.5.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- サポートされている OpenShift Container Platform バージョンをインストールします。
- 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を送信するには、OpenShift Container Platform バージョンで使用可能な対応するバージョンの Red Hat Ansible Automation Platform Resource Operator をインストールします。
その後、コンソールの Credentials ページから認証情報を作成できます。Add credential をクリックするか、ナビゲーションからページにアクセスします。認証情報は、Ansible Automation Platform の認証情報の作成 を参照してください。
1.5.3. Ansible Automation Platform の設定 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform ジョブを使用すると、タスクを自動化し、Slack や PagerDuty サービスなどの外部サービスと統合できます。Git リポジトリーのリソースルートパスには、アプリケーションのデプロイ、アプリケーションの更新、またはクラスターからのアプリケーションの削除の一部として実行される Ansible Automation Platform ジョブの prehook および posthook ディレクトリーが含まれます。
必要なアクセス権: クラスター管理者
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 のものです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して YAML ファイルを追加します。
oc apply -f
oc apply -fCopy to Clipboard Copied! Toggle word wrap Toggle overflow
アプリケーションサブスクリプションコントローラーがプリフックおよびポストフックの 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 ファイルの次のサンプルを参照してください。
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 ファイルの次のサンプルを参照してください。
Ansible ワークフローの詳細は、ワークフロー を参照してください。