検索

1.5. Ansible Automation Platform の統合と導入

download PDF

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 を参照してください。

{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.13 以降をインストールする。
  • Ansible Automation Platform をインストールする。サポートされている最新バージョンをインストールするには、Red Hat Ansible Automation Platform ドキュメントを参照してください。
  • Ansible Automation Platform Resource Operator をインストールして、Ansible Automation Platform ジョブを Git サブスクリプションのライフサイクルに接続する。ベストプラクティス: Ansible Automation Platform ジョブテンプレートは、実行時、べき等である必要があります。
  • INVENTORYEXTRA VARIABLES の両方について、テンプレートの PROMPT ON LAUNCH を確認する。詳細は、Job templates を参照してください。

1.5.2.2. Ansible Automation Platform Resource Operator のインストール

  1. OpenShift Container Platform クラスターコンソールにログインします。
  2. コンソールナビゲーションで OperatorHub をクリックします。
  3. 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 に制限されています。

  1. Ansible Automation Platform secret name セクションに入力して、コンソールからシークレットを作成します。ターミナルを使用してシークレットを作成するには、サンプルの yaml ファイルを編集して適用します。

    注記: namespace は、サブスクリプションの namespace と同じにします。stringData:tokenhost は、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
  2. 以下のコマンドを実行して 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 インスタンスを継続的に調整および再起動します。

  1. プリフックの AnsibleJob が完了したら、メインのサブスクリプションを再実行します。
  2. メインのサブスクリプションに仕様変更がある場合は、サブスクリプションを再デプロイします。再デプロイメントの手順に合わせて、メインのサブスクリプションステータスを更新する必要があります。
  3. ハブクラスターのサブスクリプションステータスを nil にリセットします。サブスクリプションは、ターゲットクラスターにサブスクリプションをデプロイするときに合わせて更新されます。

    ターゲットクラスターへのデプロイメントが終了すると、ターゲットクラスターのサブスクリプションステータスが "subscribed" または "failed" になり、ハブクラスターのサブスクリプションステータスに同期されます。

  4. メインのサブスクリプションが完了したら、新しいポストフックの AnsibleJob インスタンスを再起動します。
  5. サブスクリプションが更新されていることを確認します。以下の出力を参照してください。

    • subscription.status == "subscribed"
    • subscription.status == "propagated" with all of the target clusters "subscribed"

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.