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
を参照してください。
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 のものです。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 ワークフローの詳細は、ワークフロー を参照してください。