Red Hat Ansible Automation Platform Operator の OpenShift Container Platform へのデプロイ


Red Hat Ansible Automation Platform 2.4

OpenShift Container Platform に Ansible Automation Platform Operator をインストールして設定する

Red Hat Customer Content Services

概要

このガイドでは、OpenShift Container Platform の Red Hat Ansible Automation Platform Operator でサポートされるインストールシナリオの手順および参考情報を提供します。

はじめに

Red Hat Ansible Automation Platform に興味をお持ちいただきありがとうございます。Ansible Automation Platform は、Ansible を装備した環境に、制御、ナレッジ、委譲の機能を追加して、チームが複雑かつ複数層のデプロイメントを管理できるように支援する商用サービスです。

このドキュメントは、OpenShift Container Platform に Ansible Automation Platform Operator をデプロイするためのインストール、移行、およびアップグレードの要件を理解するのに役立ちます。

Red Hat ドキュメントへのフィードバック (英語のみ)

このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com から Technical Support チームに連絡してください。

第1章 Red Hat OpenShift Container Platform での Red Hat Ansible Automation Platform Operator の計画

Red Hat Ansible Automation Platform は、Red Hat Enterprise Linux と Red Hat Openshift の両方でサポートされます。

OpenShift Operator は、Red Hat OpenShift Container Platform に複雑な分散ソフトウェアの day 2 操作のインストールおよび自動化に役立ちます。Ansible Automation Platform Operator を使用すると、Red Hat OpenShift Container Platform に Ansible Automation Platform コンポーネントをデプロイして管理できます。

このセクションは、Red Hat OpenShift Container Platform 環境への Red Hat Ansible Automation Platform のインストールを計画するのに役立ちます。インストールを行う前に、サポートされているインストールシナリオを確認し、要件を満たしていることを確認してください。

1.1. Ansible Automation Platform Operator について

Ansible Automation Platform Operator は、OpenShift 環境に新しい Ansible Automation Platform インスタンスをボタンを押すだけでデプロイできるクラウドネイティブの機能を提供します。Ansible Automation Platform Operator には、Automation Controller および Private Automation Hub のインスタンスをデプロイして管理するリソースタイプが含まれています。また、Automation Controller デプロイメント内でジョブを定義および起動するための Automation Controller ジョブリソースも含まれています。

Kubernetes ネイティブ Operator を使用して Ansible Automation Platform インスタンスをデプロイすると、Red Hat OpenShift Container Platform にデプロイされた Playbook からインスタンスを起動するという利点があります。これには、Red Hat Ansible Automation Platform デプロイメントへのアップグレードおよび完全なライフサイクルサポートが含まれます。

OperatorHub の Red Hat Operator カタログから Ansible Automation Platform Operator をインストールできます。

1.2. OpenShift Container Platform バージョンの互換性

Ansible Automation Platform 2.4 をインストールする Ansible Automation Platform Operator は、OpenShift Container Platform 4.9 以降のバージョンで利用できます。

1.3. Red Hat OpenShift Container Platform のサポート対象のインストールシナリオ

Red Hat OpenShift Container Platform Web コンソールで OperatorHub を使用して、Ansible Automation Platform Operator をインストールできます。

または、OpenShift Container Platform コマンドラインインターフェイス(CLI) oc から {OperatorPlatform} をインストールできます。

以下のワークフローのいずれかに従って Ansible Automation Platform Operator をインストールし、これを使用して必要な Ansible Automation Platform のコンポーネントをインストールします。

  • 最初に Automation Controller カスタムリソース、次に Automation Hub カスタムリソース。
  • 最初に Automation Hub カスタムリソース、次に Automation Controller カスタムリソース。
  • Automation Controller カスタムリソース。
  • Automation Hub カスタムリソース

1.4. カスタムリソース

プライマリーインストールワークフローごとにカスタムリソースを定義できます。

1.5. 関連情報

第2章 Red Hat OpenShift Container Platform に Red Hat Ansible Automation Platform のインストール

前提条件

  • OperatorHub で Red Hat Ansible Automation Platform カタログをインストールした。
  • プラットフォーム用の StorageClass オブジェクトと、ReadWriteMany アクセスモードの永続ボリューム要求 (PVC) を作成している。詳細は、動的プロビジョニング を参照してください。
  • ReadWriteMany アクセスモードを使用して Amazon Web Services (AWS) で Red Hat OpenShift Container Platform クラスターを実行するには、NFS またはその他のストレージを追加する必要がある。

重要

OpenShift クラスターのデフォルト namespace に Ansible Automation Platform をデプロイすることはできません。aap 名前空間が推奨されます。カスタム namespace を使用できますが、Ansible Automation Platform のみを実行する必要があります。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsOperatorHub に移動します。
  3. Red Hat Ansible Automation Platform Operator を検索し、Install をクリックします。
  4. Update Channel を選択します。

    • stable-2.x: namespace スコープの Operator をインストールします。これにより、Automation Hub および Automation Controller インスタンスのデプロイが、Operator がインストールされている namespace に制限されます。これはほとんどの場合に適しています。stable-2.x チャネルは管理者特権を必要とせず、単一の namespace のみを監視するため、使用するリソースが少なくなります。
    • stable-2.x-cluster-scoped: クラスター内の複数の namespace にわたって Automation Hub と Automation Controller をデプロイし、クラスター内のすべての namespace に対して管理者特権を必要とします。
  5. Installation ModeInstalled Namespace、および Approval Strategy を選択します。
  6. Install をクリックします。

インストールプロセスが開始します。インストールが完了すると、指定した namespace に Ansible Automation Platform Operator がインストールされたことを通知するモーダルが表示されます。

検証

  • View Operator をクリックして、新しくインストールされた Ansible Automation Platform Operator を表示し、以下の Operator カスタムリソースが存在することを確認します。
Expand
Automation ControllerAutomation HubEvent-Driven Ansible (EDA)Red Hat Ansible Lightspeed
  • Automation Controller
  • Automation Controller のバックアップ
  • Automation Controller の復元
  • Automation Controller Mesh Ingress
  • Automation Hub
  • Automation Hub のバックアップ
  • Automation Hub の復元
  • EDA
  • EDA バックアップ
  • EDA Restore
  • Ansible Lightspeed
重要

1 つの namespace にインストールできる Ansible Automation Platform Operator のインスタンスは 1 つだけです。同じ namespace に複数のインスタンスをインストールすると、両方の Operator インスタンスで不適切な操作が発生する可能性があります。

これらの手順を使用して、Automation Controller Operator を Red Hat OpenShift Container Platform にインストールし、カスタムリソースを指定し、外部データベースを使用して Ansible Automation Platform をデプロイできます。

Automation controller の設定は、Automation controller の extra_settings を通じて、またはデプロイメント後にユーザーインターフェイスで直接行うことができます。ただし、extra_settings で行われた設定は、ユーザーインターフェイスで行われた設定よりも優先されることに注意することが重要です。

注記

Automation Controller のインスタンスが削除されても、関連する PVC は自動的に削除されません。これにより、新しいデプロイメントの名前が前のデプロイメントと同じ場合は、移行中に問題が発生する可能性があります。したがって、同じ namespace に新規 Automation Controller インスタンスをデプロイする前に、古い PVC を手動で削除することが推奨されます。詳細は、PVC の検索および削除 を参照してください。

3.1. 前提条件

  • Operator Hub で Red Hat Ansible Automation Platform カタログをインストールした。
  • コントローラーの場合、Operator が必要な PVC を動的に作成できるように、クラスター上にデフォルトの StorageClass を設定する必要があります。外部 PostgreSQL データベースが設定されている場合、これは必要ありません。
  • Hub の場合は、コンテンツ、Redis、および API Pod に必要な PVC を動的に作成できるように、ReadWriteMany をサポートする StorageClass がクラスター上で使用可能である必要があります。クラスター上のデフォルトの StorageClass ではない場合は、AutomationHub オブジェクトの作成時にそれを指定できます。

3.2. Automation Controller Operator のインストール

この手順を使用して、Automation Controller Operator をインストールします。

手順

  1. OperatorsInstalled Operators に移動し、Ansible Automation Platform Operator をクリックします。
  2. Automation controller タブを見つけて、Create instance をクリックします。

Form View または YAML ビューのいずれかを使用してインスタンスの設定を続行できます。

3.2.1. Automation Controller のフォームビューの作成

この手順を使用して、フォームビューを使用して Automation Controller を作成します。

手順

  1. Form View が選択されていることを確認します。デフォルトで選択されているはずです。
  2. 新しいコントローラーの名前を入力します。
  3. オプション: 必要なラベルを追加します。
  4. Advanced configuration をクリックします。
  5. インスタンスの ホスト名 を入力します。ホスト名はオプションです。デフォルトのホスト名は、選択したデプロイメント名に基づいて生成されます。
  6. 管理者アカウントのユーザー名 を入力します。
  7. 管理者の電子メールアドレス を入力します。
  8. Admin password secret ドロップダウンメニューで、シークレットを選択します。
  9. Database configuration secret ドロップダウンメニューで、シークレットを選択します。
  10. Old Database configuration secret ドロップダウンメニューで、シークレットを選択します。
  11. Secret key secret ドロップダウンメニューで、シークレットを選択します。
  12. Broadcast Websocket Secret ドロップダウンメニューで、シークレットを選択します。
  13. 必要な サービスアカウントアノテーション を入力します。
  14. PostgreSQL Container Storage Requirements ドロップダウンメニューから、requests を選択し、storage フィールドに "100Gi" と入力します。
  15. Create をクリックします。

3.2.2. コントローラーイメージのプルポリシーの設定

この手順を使用して、Automation Controller でイメージプルポリシーを設定します。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Ansible Automation Platform Operator のデプロイメントを選択します。
  4. Automation Controller タブを選択します。
  5. 新しいインスタンスの場合は、Create AutomationController をクリックします。

    1. 既存のインスタンスの場合は、⋮ アイコンをクリックして Edit AutomationController クリックすると、YAML ビューを編集できます。
  6. advanced Configuration をクリックします。Image Pull Policy の下で、ラジオボタンをクリックして選択します。

    • Always
    • Never
    • IfNotPresent
  7. Image Pull Secrets の下にあるオプションを表示するには、矢印をクリックします。

    1. Add Image Pull Secret の横にある + をクリックして、値を入力します。
  8. Web container resource requirements ドロップダウンリストの下にフィールドを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。
  9. Task container resource requirements ドロップダウンリストの下にフィールドを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。
  10. EE Control Plane container resource requirements ドロップダウンリストの下にフィールドを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。
  11. PostgreSQL init container resource requirements (when using a managed service) ドロップダウンリストの下にフィールドを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。
  12. Redis container resource requirements ドロップダウンリストの下にフィールドを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。
  13. PostgreSQL container resource requirements (when using a managed instance)* ドロップダウンリストの下のフィールドを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。
  14. PostgreSQL container storage requirements (when using a managed instance) ドロップダウンリストを表示するには、矢印をクリックします。

    1. Limits および Requests で、CPU coresMemory、および Storage の値を入力します。

      注記

      Red Hat は、実稼働環境でのアンダーサイズのデータベースを防ぐために、ストレージ要件に 100Gi を使用することを推奨します。

  15. レプリカで、インスタンスレプリカの数を入力します。
  16. Remove used secrets on instance removal で、true または false を選択します。デフォルトは false です。
  17. Preload instance with data upon creation で、true または false を選択します。デフォルトは true です。

3.2.3. コントローラー LDAP セキュリティーの設定

この手順を使用して、Automation Controller の LDAP セキュリティーを設定します。

手順

  1. ldap_cacert_secret がない場合は、次のコマンドを使用して作成できます。

    $ oc create secret generic <resourcename>-custom-certs \
        --from-file=ldap-ca.crt=<PATH/TO/YOUR/CA/PEM/FILE>  \ 
    1
    Copy to Clipboard Toggle word wrap
    1
    CA 証明書が保存されている場所を指すようにこれを変更します。

    これにより、次のようなシークレットが作成されます。

    $ oc get secret/mycerts -o yaml
    apiVersion: v1
    data:
      ldap-ca.crt: <mysecret> 
    1
    
    kind: Secret
    metadata:
      name: mycerts
      namespace: awx
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    Automation Controller は、ldap_cacert_secret を使用するときに、指定されたシークレットでデータフィールド ldap-ca.crt を検索します。
  2. LDAP Certificate Authority Trust Bundle でドロップダウンメニューをクリックし、ldap_cacert_secret を選択します。
  3. LDAP Password Secret で、ドロップダウンメニューをクリックし、シークレットを選択します。
  4. EE Images Pull Credentials Secret で、ドロップダウンメニューをクリックし、シークレットを選択します。
  5. Bundle Cacert Secret で、ドロップダウンメニューをクリックし、シークレットを選択します。
  6. Service Type の下で、ドロップダウンメニューをクリックして選択します。

    • ClusterIP
    • LoadBalancer
    • NodePort

3.2.4. Automation Controller Operator ルートオプションの設定

Red Hat Ansible Automation Platform Operator のインストールフォームを使用すると、Advanced configuration で Automation Controller Operator のルートオプションをさらに設定できます。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Ansible Automation Platform Operator のデプロイメントを選択します。
  4. Automation Controller タブを選択します。
  5. 新しいインスタンスの場合は、Create AutomationController をクリックします。

    1. 既存のインスタンスの場合は、⋮ アイコンをクリックして Edit AutomationController クリックすると、YAML ビューを編集できます。
  6. Advanced configuration をクリックします。
  7. Ingress type でドロップダウンメニューをクリックし、Route を選択します。
  8. Route DNS host で、ルートの応答先となる共通のホスト名を入力します。
  9. Route TLS termination mechanism ドロップダウンメニューをクリックし、Edge または Passthrough を選択します。ほとんどの場合は、Edge を選択する必要があります。
  10. Route TLS credential secret で、ドロップダウンメニューをクリックし、一覧からシークレットを選択します。
  11. /var/lib/projects ディレクトリーで永続性を有効にする で、スライダーを動かして true または false を選択します。

3.2.5. Automation Controller Operator の Ingress タイプの設定

Ansible Automation Platform Operator のインストールフォームを使用すると、Advanced configuration で Automation Controller Operator の Ingress をさらに設定できます。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Ansible Automation Platform Operator のデプロイメントを選択します。
  4. Automation Controller タブを選択します。
  5. 新しいインスタンスの場合は、Create AutomationController をクリックします。

    1. 既存のインスタンスの場合は、⋮ アイコンをクリックして Edit AutomationController クリックすると、YAML ビューを編集できます。
  6. Advanced configuration をクリックします。
  7. Ingress type でドロップダウンメニューをクリックし、Ingress を選択します。
  8. Ingress annotations で、Ingress に追加するアノテーションを入力します。
  9. Ingress TLS secret でドロップダウンメニューをクリックし、一覧からシークレットを選択します。

Automation Controller Operator を設定したら、フォームビューの下部にある Create をクリックします。Red Hat OpenShift Container Platform は Pod を作成します。これには数分の時間がかかる場合があります。

WorkloadsPod に移動し、新たに作成されたインスタンスを見つけることで、進捗を表示できます。

検証

Automation Controller から Ansible Automation Platform Operator インストールによって提供される以下の Operator Pod が実行されていることを確認します。

Expand
Operator マネージャーコントローラーAutomation ControllerAutomation Hub

3 つの各 Operator の Operator マネージャーコントローラーには、以下が含まれます。

  • automation-controller-operator-controller-manager
  • automation-hub-operator-controller-manager
  • resource-operator-controller-manager

Automation Controller のデプロイ後に、これらの Pod が追加されていることを確認できます。

  • controller
  • controller-postgres

Automation Hub のデプロイ後に、これらの Pod が追加されていることを確認できます。

  • hub-api
  • hub-content
  • hub-postgres
  • hub-redis
  • hub-worker
注記

Pod が見つからない場合は、プルシークレットが必要であることを示している可能性があります。プルシークレットは、保護されたイメージレジストリーまたはプライベートイメージレジストリーに必要です。詳細は、イメージプルシークレットの使用 を参照してください。oc describe pod <pod-name> を実行して、その Pod に ImagePullBackOff エラーがあるかどうかを確認することで、この問題をさらに診断できます。

3.3. Red Hat Ansible Automation Platform Operator に Automation Controller 用の外部データベースを設定する

外部データベースを使用して Ansible Automation Platform をデプロイすることを希望するユーザーは、インスタンスの認証情報と接続情報を使用してシークレットを設定し、oc create コマンドを使用してクラスターに適用するとデプロイできるようになります。

デフォルトでは、Ansible Automation Platform Operator は、Ansible Automation Platform デプロイメントと同じ namespace にマネージド PostgreSQL Pod を自動的に作成および設定します。Ansible Automation Platform Operator が自動的に作成するマネージド PostgreSQL Pod の代わりに、外部データベースを使用して Ansible Automation Platform をデプロイすることもできます。

外部データベースを使用すると、リソースを共有して再利用でき、バックアップ、アップグレード、およびパフォーマンスの最適化を手動で管理できます。

注記

データベース名が異なる限り、Automation Hub と Automation Controller の両方に同じ外部データベース (PostgreSQL インスタンス) を使用できます。つまり、単一の PostgreSQL インスタンス内に異なる名前のデータベースを複数指定できます。

次のセクションでは、Ansible Automation Platform Operator に Automation Controller の外部データベースを設定する手順を説明します。

前提条件

外部データベースが、Ansible Automation Platform の現在のリリースでサポートされているバージョンの PostgreSQL データベースを指定している。

注記

Ansible Automation Platform 2.4 は PostgreSQL 15 をサポートします。

手順

外部の postgres インスタンスの認証情報と接続情報はシークレットに保存する必要があります。この情報は、Automation Controller 仕様に設定されます。

  1. 以下のテンプレートに従って、.yaml ファイル postgres_configuration_secret を作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: external-postgres-configuration
      namespace: <target_namespace> 
    1
    
    stringData:
      host: "<external_ip_or_url_resolvable_by_the_cluster>" 
    2
    
      port: "<external_port>" 
    3
    
      database: "<desired_database_name>"
      username: "<username_to_connect_as>"
      password: "<password_to_connect_with>" 
    4
    
      sslmode: "prefer" 
    5
    
      type: "unmanaged"
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    シークレットを作成する namespace。これは、デプロイ先の namespace と同じにする必要があります。
    2
    データベースノードの解決可能なホスト名です。
    3
    外部ポートのデフォルトは 5432 です。
    4
    変数 password の値には、デプロイ、バックアップ、または復元中の問題を回避するために、一重引用符 (')、二重引用符 (")、またはバックスラッシュ (\) を含めないでください。
    5
    変数 sslmode は、external データベースに対してのみ有効です。使用できる値は、preferdisableallowrequireverify-ca、および verify-full です。
  2. oc create コマンドを使用して、external-postgres-configuration-secret.yml をクラスターに適用します。

    $ oc create -f external-postgres-configuration-secret.yml
    Copy to Clipboard Toggle word wrap
  3. AutomationController カスタムリソースオブジェクトを作成するときは、以下の例に従って、仕様にシークレットを指定します。

    apiVersion: automationcontroller.ansible.com/v1beta1
    kind: AutomationController
    metadata:
      name: controller-dev
    spec:
      postgres_configuration_secret: external-postgres-configuration
    Copy to Clipboard Toggle word wrap

3.4. 予期しない DataStyle セットを使用した外部データベースのトラブルシューティング

Ansible Automation Platform Operator をアップグレードすると、以下のようなエラーが発生する可能性があります。

NotImplementedError: can't parse timestamptz with DateStyle 'Redwood, SHOW_TIME': '18-MAY-23 20:33:55.765755 +00:00'
Copy to Clipboard Toggle word wrap

このようなエラーは、予期しない DateStyle が設定された外部データベースがある場合に発生します。この問題を解決するには、以下の手順を参照してください。

手順

  1. データベースサーバーの /var/lib/pgsql/data/postgres.conf ファイルを編集します。

    # vi /var/lib/pgsql/data/postgres.conf
    Copy to Clipboard Toggle word wrap
  2. 行を見つけ、コメントアウトします。

    #datestyle = 'Redwood, SHOW_TIME'
    Copy to Clipboard Toggle word wrap
  3. 新たに調整した行のすぐ下に、以下の設定を追加します。

    datestyle = 'iso, mdy'
    Copy to Clipboard Toggle word wrap
  4. postgres.conf ファイルを保存して閉じます。
  5. データベース設定を再読み込みします。

    # systemctl reload postgresql
    Copy to Clipboard Toggle word wrap
    注記

    このコマンドを実行しても、データベース操作が中断されることはありません。

3.5. PVC の検索および削除

Persistent Volume Claim (PVC) は、Automation Hub および Automation Controller アプリケーションが使用するデータを保存するために使用されるストレージボリュームです。これらの PVC はアプリケーションから独立しており、アプリケーションが削除されてもそのまま残ります。PVC が不要になるか、これを別の場所でバックアップしている場合には手動で削除できます。

手順

  1. デプロイメント namespace にある既存 PVC をリスト表示します。

    oc get pvc -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. 以前のデプロイメント名と PVC 名を比較して、以前のデプロイメントに関連付けられている PVC を特定します。
  3. 以前の PVC を削除します。

    oc delete pvc -n <namespace> <pvc-name>
    Copy to Clipboard Toggle word wrap

第4章 Red Hat OpenShift Container Platform Web コンソールへの Automation Hub のインストールおよび設定

これらの手順を使用して、Automation Hub Operator を Red Hat OpenShift Container Platform にインストールし、カスタムリソースを指定し、外部データベースを使用して Ansible Automation Platform をデプロイできます。

Automation Hub の設定は、Automation Hub の pulp_settings を通じて、またはデプロイメント後にユーザーインターフェイスで直接行うことができます。ただし、pulp_settings で行われた設定は、ユーザーインターフェイスで行われた設定よりも優先されることに注意することが重要です。Hub 設定は、Hub のカスタムリソース仕様で常に小文字に設定する必要があります。

注記

Automation Hub のインスタンスが削除されると、PVC は自動的に削除されません。これにより、新しいデプロイメントの名前が前のデプロイメントと同じ場合は、移行中に問題が発生する可能性があります。したがって、同じ namespace に新規 Automation Hub インスタンスをデプロイする前に、古い PVC を手動で削除することが推奨されます。詳細は、PVC の検索および削除 を参照してください。

4.1. 前提条件

  • Operator Hub で Ansible Automation Platform Operator をインストールした。

4.2. Automation Hub Operator のインストール

この手順を使用して、Automation Hub Operator をインストールします。

手順

  1. OperatorsInstalled Operators に移動します。
  2. Automation hub エントリーを見つけて、Create instance をクリックします。
  3. Form view をクリックします。
  4. 新しいコントローラーの名前を入力します。
  5. オプション: 必要なラベルを追加します。
  6. Advanced configuration をクリックします。
  7. PostgreSQL container storage requirements ドロップダウンメニューから、requests を選択します。

    1. ストレージ フィールドに "100Gi" と入力します。
  8. PostgreSQL container resource requirements ドロップダウンメニューから、requests を選択します。

    1. cpu フィールドに 200 と入力します。
    2. memory フィールドに "512Mi" と入力します。

Automation Hub には、複数の Pod がコレクションなどの共有コンテンツにアクセスできるように、ReadWriteMany ファイルベースのストレージ、Azure Blob ストレージ、または Amazon S3 準拠のストレージが必要です。

AutomationHub CR でオブジェクトストレージを設定するプロセスは、Amazon S3 および Azure Blob Storage に類似しています。

ファイルベースのストレージを使用し、インストールシナリオに Automation Hub が含まれる場合は、Ansible Automation Platform Operator のストレージオプションが ReadWriteMany に設定されていることを確認します。ReadWriteMany はデフォルトのストレージオプションです。

さらに、OpenShift Data Foundation は ReadWriteMany または S3 準拠の実装を提供します。また、ReadWriteMany をサポートするように NFS ストレージ設定をセットアップすることもできます。ただし、これが原因で、NFS サーバーが単一障害点となる可能性があります。

4.2.1.1. ReadWriteMany アクセスモードを使用した OCP ストレージのプロビジョニング

Ansible Automation Platform Operator を正常にインストールするには、最初に Automation Hub のストレージタイプを ReadWriteMany アクセスモードにプロビジョニングする必要があります。

手順

  1. プロビジョニング をクリックして、アクセスモードを更新します。
  2. 最初のステップでは、accessModes をデフォルトの ReadWriteOnce から ReadWriteMany に更新します。
  3. 永続ボリューム要求 (PVC) を作成するには、このセクションの追加手順を実施します。
4.2.1.2. Amazon S3 でのオブジェクトストレージの設定

Red Hat は、Automation Hub 用の Amazon Simple Storage Service (S3) をサポートします。AutomationHub カスタムリソース (CR) のデプロイ時に設定するか、既存のインスタンスに対して設定できます。

前提条件

  • オブジェクトを保存するために Amazon S3 バケットを作成します。
  • S3 バケットの名前を書き留めておきます。

手順

  1. AWS 認証情報および接続の詳細、ならびに Amazon S3 バケットの名前を含む Kubernetes シークレットを作成します。以下の例では、test-s3 というシークレットを作成します。

    $ oc -n $HUB_NAMESPACE apply -f- <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: 'test-s3'
    stringData:
      s3-access-key-id: $S3_ACCESS_KEY_ID
      s3-secret-access-key: $S3_SECRET_ACCESS_KEY
      s3-bucket-name: $S3_BUCKET_NAME
      s3-region: $S3_REGION
    EOF
    Copy to Clipboard Toggle word wrap
  2. シークレットを Automation Hub カスタムリソース (CR) spec に追加します。

    spec:
      object_storage_s3_secret: test-s3
    Copy to Clipboard Toggle word wrap
  3. このシークレットを既存のインスタンスに適用している場合は、API Pod を再起動して変更を反映します。<hub-name> はハブインスタンスの名前です。
$ oc -n $HUB_NAMESPACE delete pod -l app.kubernetes.io/name=<hub-name>-api
Copy to Clipboard Toggle word wrap
4.2.1.3. Azure Blob でのオブジェクトストレージの設定

Red Hat は、Automation Hub 用の Azure Blob Storage をサポートします。AutomationHub カスタムリソース (CR) のデプロイ時に設定するか、既存のインスタンスに対して設定できます。

前提条件

  • オブジェクトを保存するために Azure Storage Blob コンテナーを作成します。
  • Blob コンテナーの名前を書き留めておきます。

手順

  1. Azure アカウントの認証情報および接続の詳細、および Azure Storage blob コンテナーの名前を含む Kubernetes シークレットを作成します。以下の例では、test-azure という名前のシークレットを作成します。

    $ oc -n $HUB_NAMESPACE apply -f- <<EOF
    apiVersion: v1
    kind: Secret
    metadata:
      name: 'test-azure'
    stringData:
      azure-account-name: $AZURE_ACCOUNT_NAME
      azure-account-key: $AZURE_ACCOUNT_KEY
      azure-container: $AZURE_CONTAINER
      azure-container-path: $AZURE_CONTAINER_PATH
      azure-connection-string: $AZURE_CONNECTION_STRING
    EOF
    Copy to Clipboard Toggle word wrap
  2. シークレットを Automation Hub カスタムリソース (CR) spec に追加します。

    spec:
      object_storage_azure_secret: test-azure
    Copy to Clipboard Toggle word wrap
  3. このシークレットを既存のインスタンスに適用している場合は、API Pod を再起動して変更を反映します。<hub-name> はハブインスタンスの名前です。
$ oc -n $HUB_NAMESPACE delete pod -l app.kubernetes.io/name=<hub-name>-api
Copy to Clipboard Toggle word wrap

4.2.2. Automation Hub Operator ルートオプションの設定

Red Hat Ansible Automation Platform Operator のインストールフォームを使用すると、Advanced configuration で Automation Hub Operator のルートオプションをさらに設定できます。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Ansible Automation Platform Operator のデプロイメントを選択します。
  4. Automation Hub タブを選択します。
  5. 新しいインスタンスの場合は、Create AutomationHub をクリックします。

    1. 既存のインスタンスの場合は、⋮ アイコンをクリックして Edit AutomationHub クリックすると、YAML ビューを編集できます。
  6. Advanced configuration をクリックします。
  7. Ingress type でドロップダウンメニューをクリックし、Route を選択します。
  8. Route DNS host で、ルートの応答先となる共通のホスト名を入力します。
  9. Route TLS termination mechanism ドロップダウンメニューをクリックし、Edge または Passthrough を選択します。
  10. Route TLS credential secret で、ドロップダウンメニューをクリックし、一覧からシークレットを選択します。

4.2.3. Automation Hub Operator の Ingress タイプの設定

Ansible Automation Platform Operator インストールフォームを使用すると、Advanced configuration で Automation Hub Operator の Ingress をさらに設定できます。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Ansible Automation Platform Operator のデプロイメントを選択します。
  4. Automation Hub タブを選択します。
  5. 新しいインスタンスの場合は、Create AutomationHub をクリックします。

    1. 既存のインスタンスの場合は、⋮ アイコンをクリックして Edit AutomationHub クリックすると、YAML ビューを編集できます。
  6. Advanced Configuration をクリックします。
  7. Ingress type でドロップダウンメニューをクリックし、Ingress を選択します。
  8. Ingress annotations で、Ingress に追加するアノテーションを入力します。
  9. Ingress TLS secret でドロップダウンメニューをクリックし、一覧からシークレットを選択します。

Automation Hub Operator を設定したら、フォームビューの下部にある Create をクリックします。Red Hat OpenShift Container Platform は Pod を作成します。これには数分の時間がかかる場合があります。

WorkloadsPod に移動し、新たに作成されたインスタンスを見つけることで、進捗を表示できます。

検証

Automation Hub から Ansible Automation Platform Operator のインストールによって提供される以下の Operator Pod が実行されていることを確認します。

Expand
Operator マネージャーコントローラーAutomation ControllerAutomation Hub

3 つの各 Operator の Operator マネージャーコントローラーには、以下が含まれます。

  • automation-controller-operator-controller-manager
  • automation-hub-operator-controller-manager
  • resource-operator-controller-manager

Automation Controller のデプロイ後に、これらの Pod が追加されていることを確認できます。

  • controller
  • controller-postgres

Automation Hub のデプロイ後に、これらの Pod が追加されていることを確認できます。

  • hub-api
  • hub-content
  • hub-postgres
  • hub-redis
  • hub-worker
注記

Pod が見つからない場合は、プルシークレットが必要であることを示している可能性があります。プルシークレットは、保護されたイメージレジストリーまたはプライベートイメージレジストリーに必要です。詳細は、イメージプルシークレットの使用 を参照してください。oc describe pod <pod-name> を実行して、その Pod に ImagePullBackOff エラーがあるかどうかを確認することで、この問題をさらに診断できます。

4.3. OpenShift Container Platform での Ansible Automation Hub の LDAP 認証の設定

Hub インスタンス設定ファイルの spec セクションで、OpenShift Container Platform 上の Ansible Automation Platform の LDAP 認証を設定します。

手順

  • 次の例を使用して、Automation Hub インスタンスで LDAP を設定します。空白のフィールドには、`` と入力します。

    spec:
        pulp_settings:
          auth_ldap_user_attr_map:
            email: "mail"
            first_name: "givenName"
            last_name: "sn"
          auth_ldap_group_search_base_dn: 'cn=groups,cn=accounts,dc=example,dc=com'
          auth_ldap_bind_dn: ' '
          auth_ldap_bind_password: ' '
          auth_ldap_group_search_filter: (objectClass=posixGroup)
          auth_ldap_user_search_scope: SUBTREE
          auth_ldap_server_uri: 'ldap://ldapserver:389'
          authentication_backend_preset: ldap
          auth_ldap_mirror_groups: 'True'
          auth_ldap_user_search_base_dn: 'cn=users,cn=accounts,dc=example,dc=com'
          auth_ldap_bind_password: 'ldappassword'
          auth_ldap_user_search_filter: (uid=%(user)s)
          auth_ldap_group_search_scope: SUBTREE
          auth_ldap_user_flags_by_group: '@json {"is_superuser": "cn=tower-admin,cn=groups,cn=accounts,dc=example,dc=com"}'
    Copy to Clipboard Toggle word wrap
注記

フィールドは空のままにしないでください。変数のないフィールドの場合は、`` と入力してデフォルト値を指定します。

4.4. Automation Hub ユーザーインターフェイスへのアクセス

すべての Pod が正常に起動されると、Automation Hub インターフェイスにアクセスできます。

手順

  1. NetworkingRoutes に移動します。
  2. Location で、Automation Hub インスタンスの URL をクリックします。

Automation Hub のユーザーインターフェイスが起動し、Operator の設定プロセス中に指定された管理者の認証情報を使用してサインインできます。

注記

設定中に管理者パスワードを指定しなかった場合は、自動的に作成されます。このパスワードを確認するには、プロジェクトに移動し、WorkloadsSecrets を選択して、controller-admin-password を開きます。そこからパスワードをコピーして、Automation Hub のパスワードフィールドに貼り付けることができます。

4.5. Red Hat Ansible Automation Platform Operator での Automation Hub 用の外部データベースの設定

外部データベースを使用して Ansible Automation Platform をデプロイすることを希望するユーザーは、インスタンスの認証情報と接続情報を使用してシークレットを設定し、oc create コマンドを使用してクラスターに適用するとデプロイできるようになります。

デフォルトでは、Ansible Automation Platform Operator は、Ansible Automation Platform デプロイメントと同じ namespace にマネージド PostgreSQL Pod を自動的に作成および設定します。

専用のノードを使用して専用のリソースを確保する場合や、バックアップ、アップグレード、またはパフォーマンス調整を手動で管理する場合は、代わりに外部データベースを選択できます。

注記

データベース名が異なる限り、Automation Hub と Automation Controller の両方に同じ外部データベース (PostgreSQL インスタンス) を使用できます。つまり、単一の PostgreSQL インスタンス内に異なる名前のデータベースを複数指定できます。

次のセクションでは、Ansible Automation Platform Operator に Automation Hub 用の外部データベースを設定する手順を説明します。

前提条件

外部データベースが、Ansible Automation Platform の現在のリリースでサポートされているバージョンの PostgreSQL データベースを指定している。

注記

Ansible Automation Platform 2.4 は PostgreSQL 15 をサポートします。

手順

外部の postgres インスタンスのクレデンシャルと接続情報はシークレットに保存する必要があります。シークレットは Automation Hub の仕様に設定されます。

  1. 以下のテンプレートに従って、.yaml ファイル postgres_configuration_secret を作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: external-postgres-configuration
      namespace: <target_namespace> 
    1
    
    stringData:
      host: "<external_ip_or_url_resolvable_by_the_cluster>" 
    2
    
      port: "<external_port>" 
    3
    
      database: "<desired_database_name>"
      username: "<username_to_connect_as>"
      password: "<password_to_connect_with>" 
    4
    
      sslmode: "prefer" 
    5
    
      type: "unmanaged"
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    シークレットを作成する namespace。これは、デプロイ先の namespace と同じにする必要があります。
    2
    データベースノードの解決可能なホスト名です。
    3
    外部ポートのデフォルトは 5432 です。
    4
    変数 password の値には、デプロイ、バックアップ、または復元中の問題を回避するために、一重引用符 (')、二重引用符 (")、またはバックスラッシュ (\) を含めないでください。
    5
    変数 sslmode は、external データベースに対してのみ有効です。使用できる値は、preferdisableallowrequireverify-ca、および verify-full です。
  2. oc create コマンドを使用して、external-postgres-configuration-secret.yml をクラスターに適用します。

    $ oc create -f external-postgres-configuration-secret.yml
    Copy to Clipboard Toggle word wrap
  3. AutomationHub カスタムリソースオブジェクトを作成するときは、以下の例に従って、仕様にシークレットを指定します。

    apiVersion: automationhub.ansible.com/v1beta1
    kind: AutomationHub
    metadata:
      name: hub-dev
    spec:
      postgres_configuration_secret: external-postgres-configuration
    Copy to Clipboard Toggle word wrap

4.5.1. Automation Hub PostgreSQL データベースの hstore 拡張機能の有効化

Ansible Automation Platform 2.4 以降、データベース移行スクリプトは hstore フィールドを使用して情報を保存するため、Automation Hub PostgreSQL データベースの hstore 拡張機能を有効にする必要があります。

Ansible Automation Platform インストーラーとマネージド PostgreSQL サーバーを使用する場合、このプロセスは自動的に行われます。

PostgreSQL データベースが外部にある場合は、Automation Hub をインストールする前に、Automation Hub PostreSQL データベースの hstore 拡張機能を手動で有効にする必要があります。

Automation Hub のインストール前に hstore 拡張機能が有効になっていない場合は、データベースの移行中にエラーが発生します。

手順

  1. 拡張機能が PostgreSQL サーバー (Automation Hub データベース) で利用できるかどうかを確認します。

    $ psql -d <automation hub database> -c "SELECT * FROM pg_available_extensions WHERE name='hstore'"
    Copy to Clipboard Toggle word wrap

    <automation hub database> のデフォルト値は automationhub です。

    hstore が利用できる場合の出力例:

    name  | default_version | installed_version |comment
    ------+-----------------+-------------------+---------------------------------------------------
     hstore | 1.7           |                   | data type for storing sets of (key, value) pairs
    (1 row)
    Copy to Clipboard Toggle word wrap

    hstore が利用できない場合の出力例:

     name | default_version | installed_version | comment
    ------+-----------------+-------------------+---------
    (0 rows)
    Copy to Clipboard Toggle word wrap
  2. RHEL ベースのサーバーでは、hstore 拡張機能は postgresql-contrib RPM パッケージに含まれていますが、PostgreSQL サーバー RPM パッケージのインストール時に自動的にインストールされません。

    RPM パッケージをインストールするには、次のコマンドを使用します。

    dnf install postgresql-contrib
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを使用して、Automation Hub データベースに hstore PostgreSQL 拡張機能を作成します。

    $ psql -d <automation hub database> -c "CREATE EXTENSION hstore;"
    Copy to Clipboard Toggle word wrap

    その出力は次のとおりです。

    CREATE EXTENSION
    Copy to Clipboard Toggle word wrap
  4. 次の出力では、使用されている hstore 拡張子が installed_version フィールドに含まれており、hstore が有効であることを示しています。

    name | default_version | installed_version | comment
    -----+-----------------+-------------------+------------------------------------------------------
    hstore  |     1.7      |       1.7         | data type for storing sets of (key, value) pairs
    (1 row)
    Copy to Clipboard Toggle word wrap

4.6. PVC の検索および削除

Persistent Volume Claim (PVC) は、Automation Hub および Automation Controller アプリケーションが使用するデータを保存するために使用されるストレージボリュームです。これらの PVC はアプリケーションから独立しており、アプリケーションが削除されてもそのまま残ります。PVC が不要になるか、これを別の場所でバックアップしている場合には手動で削除できます。

手順

  1. デプロイメント namespace にある既存 PVC をリスト表示します。

    oc get pvc -n <namespace>
    Copy to Clipboard Toggle word wrap
  2. 以前のデプロイメント名と PVC 名を比較して、以前のデプロイメントに関連付けられている PVC を特定します。
  3. 以前の PVC を削除します。

    oc delete pvc -n <namespace> <pvc-name>
    Copy to Clipboard Toggle word wrap

4.7. 追加の設定

コレクションのダウンロード数は、コレクションの使用状況を把握するのに役立ちます。コレクションのダウンロード数を Automation Hub に追加するには、次の設定を指定します。

spec:
  pulp_settings:
    ansible_collect_download_count: true
Copy to Clipboard Toggle word wrap

ansible_collect_download_count が有効になっている場合、Automation Hub はコレクションごとにダウンロード数を表示します。

以下の手順に従って、oc コマンドを使用して、OpenShift Container Platform コマンドラインインターフェイス (CLI) から Red Hat OpenShift Container Platform に Ansible Automation Platform Operator をインストールします。

5.1. 前提条件

  • Operator をインストールするパーミッションを持つアカウントを使用して Red Hat OpenShift Container Platform にアクセスできる。
  • OpenShift Container Platform CLI oc コマンドがローカルシステムにインストールされている。詳細は、Red Hat OpenShift Container Platform 製品ドキュメントの OpenShift CLI のインストール を参照してください。

5.2. namespace への Ansible Automation Platform Operator のインストール

この手順を使用して、namespace を Operator にサブスクライブします。

重要

OpenShift クラスターのデフォルト namespace に Ansible Automation Platform をデプロイすることはできません。aap 名前空間が推奨されます。カスタム namespace を使用できますが、Ansible Automation Platform のみを実行する必要があります。

手順

  1. Operator にプロジェクトを作成します。

    oc new-project ansible-automation-platform
    Copy to Clipboard Toggle word wrap
  2. sub.yaml という名前のファイルを作成します。
  3. 以下の YAML コードを sub.yaml ファイルに追加します。

    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        openshift.io/cluster-monitoring: "true"
      name: ansible-automation-platform
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: ansible-automation-platform-operator
      namespace: ansible-automation-platform
    spec:
      targetNamespaces:
        - ansible-automation-platform
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: ansible-automation-platform
      namespace: ansible-automation-platform
    spec:
      channel: 'stable-2.4'
      installPlanApproval: Automatic
      name: ansible-automation-platform-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    ---
    apiVersion: automationcontroller.ansible.com/v1beta1
    kind: AutomationController
    metadata:
      name: example
      namespace: ansible-automation-platform
    spec:
      replicas: 1
    Copy to Clipboard Toggle word wrap

    このファイルは、ansible-automation-platform namespace を ansible-automation-platform-operator Operator にサブスクライブする ansible-automation-platform という Subscription オブジェクトを作成します。

    次に、ansible-automation-platform namespace に example という名前の AutomationController オブジェクトを作成します。

    example の Automation Controller 名を変更するには、sub.yamlkind: AutomationController セクションの name フィールドを編集し、<automation_controller_name> を、使用する名前に置き換えます。

    apiVersion: automationcontroller.ansible.com/v1beta1
    kind: AutomationController
    metadata:
      name: <automation_controller_name>
      namespace: ansible-automation-platform
    Copy to Clipboard Toggle word wrap
  4. oc apply コマンドを実行して、sub.yaml ファイルで指定されたオブジェクトを作成します。

    oc apply -f sub.yaml
    Copy to Clipboard Toggle word wrap

namespace が ansible-automation-platform-operator Operator に正常にサブスクライブされたことを確認するには、oc get subs コマンドを実行します。

$ oc get subs -n ansible-automation-platform
Copy to Clipboard Toggle word wrap

namespace を Operator にサブスクライブする方法は、Red Hat OpenShift Container Platform Operators ガイドの CLI を使用した OperatorHub からのインストール を参照してください。

OpenShift Container Platform CLI を使用して、作成した Automation Controller の Web アドレスとパスワードを取得できます。

5.3. OpenShift Container Platform CLI からの Automation Controller ログインの詳細の取得

Automation Controller にログインするには、Web アドレスとパスワードが必要です。

5.3.1. Automation Controller の Web アドレスの取得

Red Hat OpenShift Container Platform ルートは、外部クライアントが名前でサービスに到達できるように、ホスト名でサービスを公開します。Automation Controller インスタンスを作成した時に、そのルートが作成されました。ルートは、YAML ファイルで Automation Controller オブジェクトに割り当てた名前を継承します。

以下のコマンドを使用してルートを取得します。

oc get routes -n <controller_namespace>
Copy to Clipboard Toggle word wrap

以下の例では、Automation Controller の exampleansible-automation-platform namespace で実行されています。

$ oc get routes -n ansible-automation-platform

NAME      HOST/PORT                                              PATH   SERVICES          PORT   TERMINATION     WILDCARD
example   example-ansible-automation-platform.apps-crc.testing          example-service   http   edge/Redirect   None
Copy to Clipboard Toggle word wrap

Automation Controller インスタンスのアドレスは、example-ansible-automation-platform.apps-crc.testing です。

5.3.2. Automation Controller のパスワードの取得

sub.yaml の Automation Controller インスタンスの YAML ブロックは、name および admin_user キーに値を割り当てます。以下のコマンドのこれらの値を使用して、Automation Controller インスタンスのパスワードを取得します。

oc get secret/<controller_name>-<admin_user>-password -o yaml
Copy to Clipboard Toggle word wrap

admin_user のデフォルト値は admin です。sub.yaml で admin ユーザー名を変更した場合は、コマンドを変更します。

以下の例では、example という名前の Automation Controller オブジェクトのパスワードを取得します。

oc get secret/example-admin-password -o yaml
Copy to Clipboard Toggle word wrap

Automation Controller インスタンスのパスワードは、出力の metadata フィールドに表示されます。

$ oc get secret/example-admin-password -o yaml

apiVersion: v1
data:
  password: ODzLODzLODzLODzLODzLODzLODzLODzLODzLODzLODzL
kind: Secret
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Secret","metadata":{"labels":{"app.kubernetes.io/component":"automationcontroller","app.kubernetes.io/managed-by":"automationcontroller-operator","app.kubernetes.io/name":"example","app.kubernetes.io/operator-version":"","app.kubernetes.io/part-of":"example"},"name":"example-admin-password","namespace":"ansible-automation-platform"},"stringData":{"password":"88TG88TG88TG88TG88TG88TG88TG88TG"}}'
  creationTimestamp: "2021-11-03T00:02:24Z"
  labels:
    app.kubernetes.io/component: automationcontroller
    app.kubernetes.io/managed-by: automationcontroller-operator
    app.kubernetes.io/name: example
    app.kubernetes.io/operator-version: ""
    app.kubernetes.io/part-of: example
  name: example-admin-password
  namespace: ansible-automation-platform
  resourceVersion: "185185"
  uid: 39393939-5252-4242-b929-665f665f665f
Copy to Clipboard Toggle word wrap

この例では、パスワードは 88TG88TG88TG88TG88TG88TG88TG88TG です。

Event-Driven Ansible Controller は、イベント駆動型自動化のためのインターフェイスであり、IT リクエストの自動解決を導入するものです。このコンポーネントは、イベントのソースに接続し、ルールブックを使用してそれらのイベントを操作するのに役立ちます。Event-Driven Ansible Controller をデプロイすると、決定を自動化し、多数のイベントソースを使用して、複数の IT ユースケース内で、そして複数の IT ユースケースをまたいでイベント駆動型の自動化を実装し、より効率的なサービス提供を実現できます。

次の手順を使用して、OpenShift Container Platform の Ansible Automation Platform Operator を使用して Event-Driven Ansible をインストールします。

前提条件

  • Ansible Automation Platform Operator を OpenShift Container Platform にインストールしている。
  • Automation Controller をインストールして設定している。

手順

  1. OperatorsInstalled Operators を選択します。
  2. Ansible Automation Platform のインストールを見つけて選択します。
  3. Details タブで EDA モーダルを見つけ、Create instance をクリックします。
  4. Form view をクリックし、Name フィールドに、新しい Event-Driven Ansible Controller デプロイメントの名前を入力します。

    重要

    現在の OpenShift Container Platform の namespace に他の Ansible Automation Platform コンポーネントがインストールされている場合は、Event-Driven Ansible カスタムリソースを作成するときに、必ず Event-Driven Ansible Controller に一意の名前を指定してください。これを怠ると、名前の競合が発生し、Event-Driven Ansible コントローラーのデプロイメントに影響が及ぶ可能性があります。

  5. Automation Server URL フィールドにコントローラー URL を指定します。

    Openshift にも Automation Controller をデプロイしている場合は、ナビゲーションパネルの NetworkingRoutes の下に URL が表示されます。

    注記

    必須のカスタマイズはこれだけですが、必要に応じて、UI フォームを使用するか、YAML 設定タブで直接他のオプションをカスタマイズできます。

    重要

    Event-Driven Ansible の同時アクティベーションを効率的に実行できるようにするには、クラスターで利用可能なリソースに比例してアクティブ化の最大数を設定する必要があります。これは、YAML ビューで Event-Driven Ansible 設定を調整することで実行できます。

    標準条件下で Event-Driven Ansible ルールブックをアクティブ化すると、約 250 MB のメモリーが使用されます。ただし、実際のメモリー消費量は、ルールの複雑さと処理されるイベントのボリュームおよびサイズによって大幅に異なる可能性があります。大量のイベントが予想される場合やルールブックの複雑さが高いシナリオでは、ステージング環境でのリソース使用量の事前評価を行います。これにより、アクティベーションの最大数はリソースの容量に基づいて行われます。

  6. YAML view をクリックして、YAML キーの値を更新します。
  7. spec キー値セクションの最後に次の文字列をコピーして貼り付けます。

    extra_settings:
      - setting: EDA_MAX_RUNNING_ACTIVATIONS
        value: '12'
    database:
      resource_requirements:
        requests:
          cpu: 200m
          memory: 512Mi
      storage_requirements:
        requests:
          storage: 100Gi
    Copy to Clipboard Toggle word wrap
  8. Create をクリックします。これにより、指定した namespace に Event-Driven Ansible Controller がデプロイされます。

    数分後、インストールが Successful とマークされたら、OpenShift UI の Routes ページで Event-Driven Ansible UI の URL を確認できます。

  9. ナビゲーションパネルから NetworkingRoutes を選択し、作成された新しい Route URL を見つけます。

    ルートはカスタムリソースの名前に基づいてリストされます。

  10. Location 列の下にある新しい URL をクリックして、ブラウザーで Event-Driven Ansible に移動します。
  11. ナビゲーションパネルから WorkloadsSecrets を選択し、作成された管理者パスワード k8s シークレットを見つけます (カスタムパスワードを指定した場合を除く)。

    シークレットはカスタムリソースの名前に基づいてリストされます。シークレットの末尾には -admin-password が付いています。

    注記

    シークレットのパスワードの値を使用して、Event-Driven Ansible Controller UI にログインできます。デフォルトのユーザーは admin です。

第7章 Automation Hub での Red Hat Single Sign-On Operator の使用

Private Automation Hub は、認証に Red Hat Single Sign-On を使用します。

Red Hat Single Sign-On Operator はリソースを作成および管理します。この Operator を使用してカスタムリソースを作成し、Openshift で Red Hat Single Sign-On 管理を自動化します。

  • 仮想マシン (VM) に Ansible Automation Platform をインストールする場合、インストーラーは Red Hat Single Sign-On を Private Automation Hub で使用するために自動的にインストールおよび設定できます。
  • Ansible Automation Platform を Red Hat OpenShift Container Platform にインストールする場合は、Single Sign-On を個別にインストールする必要があります。

この章では、Red Hat Single Sign-On を設定し、Ansible Automation Platform が OpenShift Container Platform にインストールされている場合に Private Automation Hub と統合するプロセスを説明します。

前提条件

  • Operator をインストールするパーミッションを持つアカウントを使用して Red Hat OpenShift Container Platform にアクセスできる。
  • Red Hat Ansible Automation Platform Operator が含まれるカタログをインストールしている。
  • Red Hat Single Sign-On Operator をインストールしている。Red Hat Single Sign-On Operator をインストールするには、Red Hat Single Sign-On ドキュメントの カスタムリソースを使用した Red Hat Single Sign-On のインストール の手順に従います。

7.1. Keycloak インスタンスの作成

Red Hat Single Sign-On Operator のインストール時に、Ansible Automation Platform で使用する Keycloak インスタンスを作成できます。

ここから、外部の Postgres を指定するか、指定しないは作成されます。

手順

  1. OperatorInstalled Operators に移動します。
  2. rh-sso プロジェクトを選択します。
  3. Red Hat Single Sign-On Operator を選択します。
  4. Red Hat Single Sign-On Operator の詳細ページで、Keycloak を選択します。
  5. Create instance をクリックします。
  6. YAML ビュー をクリックします。

    デフォルトの Keycloak カスタムリソースは次のとおりです。

    apiVersion: keycloak.org/v1alpha1
    kind: Keycloak
    metadata:
      name: example-keycloak
      labels:
    	app: sso
      namespace: aap
    spec:
      externalAccess:
    	enabled: true
      instances: 1
    Copy to Clipboard Toggle word wrap
  7. Create をクリックします。
  8. デプロイメントが完了すると、この認証情報を使用して管理コンソールにログインできます。
  9. 管理者の認証情報は、namespace の credential-<custom-resource> (keycloak の例) シークレットにあります。

7.2. Ansible Automation Platform の Keycloak レルムの作成

ユーザー、認証情報、ロール、およびグループのセットを管理するレルムを作成します。ユーザーはレルムに属し、レルムにログインします。レルムは相互に分離され、制御するユーザーのみを管理および認証できます。

手順

  1. OperatorInstalled Operators に移動します。
  2. Red Hat Single Sign-On Operator プロジェクトを選択します。
  3. Keycloak Realm タブを選択し、Create Keycloak Realm をクリックします。
  4. Keycloak Realm フォームで、YAML view を選択します。YAML ファイルを次のように編集します。

    kind: KeycloakRealm
    apiVersion: keycloak.org/v1alpha1
    metadata:
      name: ansible-automation-platform-keycloakrealm
      namespace: rh-sso
      labels:
        app: sso
        realm: ansible-automation-platform
    spec:
      realm:
        id: ansible-automation-platform
        realm: ansible-automation-platform
        enabled: true
        displayName: Ansible Automation Platform
      instanceSelector:
        matchLabels:
          app: sso
    Copy to Clipboard Toggle word wrap
    Expand

    フィールド

    説明

    metadata.name

    設定リソース (CR) の名前のメタデータに一意の値を設定します。

    metadata.namespace

    設定リソース (CR) の名前のメタデータに一意の値を設定します。

    metadata.labels.app

    ラベルを一意の値に設定します。これは、クライアント CR を作成するときに使用されます。

    metadata.labels.realm

    ラベルを一意の値に設定します。これは、クライアント CR を作成するときに使用されます。

    spec.realm.id

    レルム名と ID を設定します。同じものを設定する必要があります。

    spec.realm.realm

    レルム名と ID を設定します。同じものを設定する必要があります。

    spec.realm.displayname

    表示する名前を設定します。

  5. Create をクリックし、プロセスが完了するまで待ちます。

7.3. Keycloak クライアントの作成

Keycloak クライアントは、Red Hat Single Sign-On を使用してハブユーザーを認証します。ユーザーが認証すると、リクエストは Keycloak クライアントを通過します。Single Sign-On が OAuth トークンを検証または発行すると、クライアントは Automation Hub に応答を提供し、ユーザーはログインできるようになります。

手順

  1. OperatorInstalled Operators に移動します。
  2. Red Hat Single Sign-On Operator プロジェクトを選択します。
  3. Keycloak Client タブを選択し、Create Keycloak Client をクリックします。
  4. Keycloak Realm フォームで、YAML view を選択します。
  5. デフォルトの YAML ファイルを次のものに置き換えます。

    kind: KeycloakClient
    apiVersion: keycloak.org/v1alpha1
    metadata:
      name: automation-hub-client-secret
      labels:
        app: sso
        realm: ansible-automation-platform
      namespace: rh-sso
    spec:
      realmSelector:
        matchLabels:
          app: sso
          realm: ansible-automation-platform
      client:
        name: Automation Hub
        clientId: automation-hub
        secret: <client-secret>                        
    1
    
        clientAuthenticatorType: client-secret
        description: Client for automation hub
        attributes:
          user.info.response.signature.alg: RS256
          request.object.signature.alg: RS256
        directAccessGrantsEnabled: true
        publicClient: true
        protocol: openid-connect
        standardFlowEnabled: true
        protocolMappers:
          - config:
              access.token.claim: "true"
              claim.name: "family_name"
              id.token.claim: "true"
              jsonType.label: String
              user.attribute: lastName
              userinfo.token.claim: "true"
            consentRequired: false
            name: family name
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
          - config:
              userinfo.token.claim: "true"
              user.attribute: email
              id.token.claim: "true"
              access.token.claim: "true"
              claim.name: email
              jsonType.label: String
            name: email
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
            consentRequired: false
          - config:
              multivalued: "true"
              access.token.claim: "true"
              claim.name: "resource_access.${client_id}.roles"
              jsonType.label: String
            name: client roles
            protocol: openid-connect
            protocolMapper: oidc-usermodel-client-role-mapper
            consentRequired: false
          - config:
              userinfo.token.claim: "true"
              user.attribute: firstName
              id.token.claim: "true"
              access.token.claim: "true"
              claim.name: given_name
              jsonType.label: String
            name: given name
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
            consentRequired: false
          - config:
              id.token.claim: "true"
              access.token.claim: "true"
              userinfo.token.claim: "true"
            name: full name
            protocol: openid-connect
            protocolMapper: oidc-full-name-mapper
            consentRequired: false
          - config:
              userinfo.token.claim: "true"
              user.attribute: username
              id.token.claim: "true"
              access.token.claim: "true"
              claim.name: preferred_username
              jsonType.label: String
            name: <username>
            protocol: openid-connect
            protocolMapper: oidc-usermodel-property-mapper
            consentRequired: false
          - config:
              access.token.claim: "true"
              claim.name: "group"
              full.path: "true"
              id.token.claim: "true"
              userinfo.token.claim: "true"
            consentRequired: false
            name: group
            protocol: openid-connect
            protocolMapper: oidc-group-membership-mapper
          - config:
              multivalued: 'true'
              id.token.claim: 'true'
              access.token.claim: 'true'
              userinfo.token.claim: 'true'
              usermodel.clientRoleMapping.clientId:  'automation-hub'
              claim.name: client_roles
              jsonType.label: String
            name: client_roles
            protocolMapper: oidc-usermodel-client-role-mapper
            protocol: openid-connect
          - config:
              id.token.claim: "true"
              access.token.claim: "true"
              included.client.audience: 'automation-hub'
            protocol: openid-connect
            name: audience mapper
            protocolMapper: oidc-audience-mapper
      roles:
        - name: "hubadmin"
          description: "An administrator role for automation hub"
    Copy to Clipboard Toggle word wrap
    1
    これを一意の値に置き換えます。
  6. Create をクリックし、プロセスが完了するまで待ちます。

Automation Hub がデプロイされたら、Red Hat Single Sign-On クライアントの更新 で説明されているように、「有効なリダイレクト URI」と「Web オリジン」でクライアントを更新する必要があります。さらに、クライアントにはトークンマッパーが事前設定されています。認証プロバイダーがグループデータを Red Hat SSO に提供しない場合は、その情報がどのように渡されるかを反映するようにグループマッピングを更新する必要があります。これは通常、ユーザー属性によるものです。

7.4. Keycloak ユーザーの作成

この手順では、スーパー管理者権限で Automation Hub にログインできる、hubadmin ロールを持つ Keycloak ユーザーを作成します。

手順

  1. OperatorInstalled Operators に移動します。
  2. Red Hat Single Sign-On Operator プロジェクトを選択します。
  3. Keycloak Realm タブを選択し、Create Keycloak User をクリックします。
  4. Keycloak User フォームで、YAML view を選択します。
  5. デフォルトの YAML ファイルを次のものに置き換えます。

    apiVersion: keycloak.org/v1alpha1
    kind: KeycloakUser
    metadata:
      name: hubadmin-user
      labels:
        app: sso
        realm: ansible-automation-platform
      namespace: rh-sso
    spec:
      realmSelector:
        matchLabels:
          app: sso
          realm: ansible-automation-platform
      user:
        username: hub_admin
        firstName: Hub
        lastName: Admin
        email: hub_admin@example.com
        enabled: true
        emailVerified: false
        credentials:
          - type: password
            value: <ch8ngeme>
        clientRoles:
          automation-hub:
            - hubadmin
    Copy to Clipboard Toggle word wrap
  6. Create をクリックし、プロセスが完了するまで待ちます。

ユーザーが作成されると、Operator は credential-<realm name>-<username>-<namespace> という命名パターンを使用してユーザー名とパスワードの両方を含む Secret を作成します。この例では、認証情報は credential-ansible-automation-platform-hub-admin-rh-sso と呼ばれます。ユーザーが作成されると、Operator はユーザーのパスワードを更新しません。パスワードの変更はシークレットに反映されません。

7.5. Red Hat Single Sign-On 接続シークレットの作成

この手順を使用して、Red Hat Single Sign-On の接続シークレットを作成します。

手順

  1. https://<sso_host>/auth/realms/ansible-automation-platform に移動します。
  2. public_key 値をコピーします。
  3. OpenShift Web UI で、WorkloadsSecrets に移動します。
  4. ansible-automation-platform プロジェクトを選択します。
  5. Create をクリックし、From YAML を選択します。
  6. 次の YAML を編集してシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: automation-hub-sso                       
    1
    
      namespace: ansible-automation-platform
    type: Opaque
    stringData:
      keycloak_host: "keycloak-rh-sso.apps-crc.testing"
      keycloak_port: "443"
      keycloak_protocol: "https"
      keycloak_realm: "ansible-automation-platform"
      keycloak_admin_role: "hubadmin"
      social_auth_keycloak_key: "automation-hub"
      social_auth_keycloak_secret: "client-secret"   
    2
    
      social_auth_keycloak_public_key: >-            
    3
    Copy to Clipboard Toggle word wrap
    1
    この名前は、Automation Hub インスタンスを作成する際の次のステップで使用されます。
    2
    Automation Hub 用の Keycloak クライアントを作成するときにシークレットが変更した場合は、必ずこの値を変更して一致させます。
    3
    Ansible Automation Platform Operator デプロイメントの public_key の値を入力します。
  7. Create をクリックし、プロセスが完了するまで待ちます。

7.6. Ansible Automation Platform Operator を使用した Automation Hub のインストール

Ansible Automation Platform Operator を使用して Automation Hub をインストールするには、次の手順を使用します。

手順

  1. OperatorInstalled Operators に移動します。
  2. Ansible Automation Platform Operator のデプロイメントを選択します。
  3. Automation Hub タブを選択します。
  4. Create Automation hub をクリックします。
  5. YAML view を選択します。YAML は次のようになります。

    apiVersion: automationhub.ansible.com/v1beta1
    kind: AutomationHub
    metadata:
      name: private-ah                              
    1
    
      namespace: aap
    spec:
      sso_secret: automation-hub-sso                
    2
    
      pulp_settings:
        verify_ssl: false
      route_tls_termination_mechanism: Edge
      ingress_type: Route
      loadbalancer_port: 80
      file_storage_size: 100Gi
      image_pull_policy: IfNotPresent
      replicas: 1                                   
    3
    
      web_replicas: N
      task_replicas: N
      file_storage_access_mode: ReadWriteMany
      content:
        log_level: INFO
        replicas: 2
      postgres_storage_requirements:
        limits:
          storage: 50Gi
        requests:
          storage: 8Gi
      api:
        log_level: INFO
        replicas: 1
      postgres_resource_requirements:
        limits:
          cpu: 1000m
          memory: 8Gi
        requests:
          cpu: 500m
          memory: 2Gi
      loadbalancer_protocol: http
      resource_manager:
        replicas: 1
      worker:
        replicas: 2
    Copy to Clipboard Toggle word wrap
    1
    インスタンスに使用する名前に metadata.name を設定します。
    2
    spec.sso_secret を、Red Hat Single Sign On 接続の詳細を保持するためにシークレットを作成 で作成したシークレットの名前に設定します。
    3
    web_replicas または task_replicas をそれぞれ使用して、デプロイメントごとにレプリカをスケールアップまたはスケールダウンします。ここで、N は作成するレプリカの数を表します。あるいは、replicas を使用して、両方のデプロイメントにわたってすべての Pod をスケーリングすることもできます。詳細は、Scaling the Web and Task Pods independently を参照してください。
    注記

    この YAML は SSL 検証をオフにします (ssl_verify: false)。OpenShift に自己署名証明書を使用していない場合は、この設定を削除できます。

  6. Create をクリックし、プロセスが完了するまで待ちます。

7.7. 許可されたレジストリーを Automation Controller イメージ設定に追加する

Automation Hub にコンテナーイメージをデプロイする前に、Automation Controller イメージ設定の allowedRegistries にレジストリーを追加する必要があります。これを行うには、以下のコードをコピーして Automation Controller イメージ YAML に貼り付けます。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. HomeSearch に移動します。
  3. Resources ドロップダウンリストを選択し、Image と入力します。
  4. Image (config,openshift.io/v1) を選択します。
  5. Name の見出しの下にある Cluster をクリックします。
  6. YAML タブを選択します。
  7. 次のように spec value の下に貼り付けます。

    spec:
      registrySources:
        allowedRegistries:
        - quay.io
        - registry.redhat.io
        - image-registry.openshift-image-registry.svc:5000
        - <OCP route for your automation hub>
    Copy to Clipboard Toggle word wrap
  8. Save をクリックします。

7.8. Automation Hub ルートの決定

ハブルートを決定するには、次の手順を使用します。

手順

  1. NetworkingRoutes に移動します。
  2. インストールに使用したプロジェクトを選択します。
  3. private-ah-web-svc サービスの場所をコピーします。Automation Hub インスタンスの作成時に別の名前を使用した場合は、サービスの名前が異なります。これは、後で Red Hat Single Sign-On クライアントを更新するために使用されます。

7.9. Red Hat Single Sign-On クライアントの更新

Automation Hub がインストールされ、インスタンスの URL がわかっている場合は、Red Hat Single Sign-On を更新して、有効なリダイレクト URI と Web オリジンの設定を設定する必要があります。

手順

  1. OperatorInstalled Operators に移動します。
  2. RH-SSO プロジェクトを選択します。
  3. Red Hat Single Sign-On Operator をクリックします。
  4. Keycloak Client を選択します。
  5. automation-hub-client-secret client クライアントをクリックします。
  6. YAML を選択します。
  7. クライアント YAML を更新して、Valid Redirect URIs 設定と Web Origins 設定を追加します。

    redirectUris:
      - 'https://private-ah-ansible-automation-platform.apps-crc.testing/*'
    webOrigins:
      - 'https://private-ah-ansible-automation-platform.apps-crc.testing'
    Copy to Clipboard Toggle word wrap
    Expand

    フィールド

    説明

    redirectURIs

    これは、Automation Hub ルートの決定 で決定されたロケーションです。/* を redirectUris 設定の末尾に必ず追加してください。

    webOrigins

    これは、Automation Hub ルートの決定 で決定されたロケーションです。

    注記

    これらの設定を入力するときは、インデントが正しいことを確認してください。

  8. Save をクリックします。

接続を確認するには

  1. Automation Hub ルートに移動します。
  2. hub_admin ユーザー認証情報を入力してサインインします。
  3. Red Hat Single Sign-On は認証を処理し、Automation Hub にリダイレクトします。

7.10. 関連情報

第8章 Red Hat Ansible Automation Platform から Red Hat Ansible Automation Platform Operator への移行

Red Hat Ansible Automation Platform デプロイメントを Ansible Automation Platform Operator に移行すると、Kubernetes ネイティブ Operator が提供する利点を活用できます。これには、Red Hat Ansible Automation Platform デプロイメントの簡単なアップグレードや完全なライフサイクルサポートが含まれます。

以下のいずれかのデプロイメントを Ansible Automation Platform Operator に移行するには、この章の手順を使用してください。

  • Ansible Tower 3.8.6、Automation Controller、または Automation Hub の仮想マシンベースのインストール
  • Ansible Tower 3.8.6 の Openshift インスタンス (Ansible Automation Platform 1.2)

8.1. 移行に関する考慮事項

OpenShift Container Platform 3 で Ansible Automation Platform 1.2 から OpenShift Container Platform 4 の Ansible Automation Platform 2.x にアップグレードする場合は、新規の OpenShift Container Platform バージョン 4 クラスターをプロビジョニングし、Ansible Automation Platform を新規クラスターに移行する必要があります。

8.2. 移行の準備

現在の Ansible Automation Platform デプロイメントを Ansible Automation Platform Operator に移行する前に、既存のデータのバックアップを作成し、シークレットキーおよび postgresql 設定の k8s シークレットを作成します。

注記

Automation Controller と Automation Hub インスタンスの両方を移行する場合は、秘密鍵のシークレットの作成postgresql 設定シークレットの作成 の手順を繰り返し、データの Ansible Automation Platform Operator への移行 に進みます。

8.2.1. Ansible Automation Platform Operator への移行

前提条件

Ansible Automation Platform デプロイメントを Ansible Automation Platform Operator に移行するには、以下が必要です。

  • 秘密鍵のシークレット
  • Postgresql の設定
  • 新しい OpenShift クラスターの namespace のロールベースアクセス制御
  • 新しい OpenShift クラスターは、以前の PostgreSQL データベースに接続可能である必要があります。
注記

Red Hat Ansible Automation Platform の初期インストールの前に、秘密鍵情報をインベントリーファイルに保存できます。秘密鍵を覚えていない場合や、インベントリーファイルを見つけられない場合は、Red Hat カスタマーポータルから Ansible サポート にお問い合わせください。

Ansible Automation Platform 2.x 以前からデータを移行する前に、失われた防止のためにデータのバックアップを作成する必要があります。データをバックアップするには、以下の手順を実施します。

手順

  1. 現在のデプロイメントプロジェクトにログインします。
  2. setup.sh を実行して、現在のデータまたはデプロイメントのバックアップを作成します。

    バージョン 2.x 以前のオンプレミスデプロイメントの場合:

    $ ./setup.sh -b
    Copy to Clipboard Toggle word wrap

    バージョン 2.0 より前の OpenShift デプロイメント (非 Operator デプロイメント) の場合:

    ./setup_openshift.sh -b
    Copy to Clipboard Toggle word wrap

8.2.2. 秘密鍵のシークレットの作成

データを OpenShift Container Platform の Ansible Automation Platform Operator に移行するには、秘密鍵を作成する必要があります。Automation Controller、Automation Hub、およびイベント駆動型 Ansible を移行する場合は、初回インストール時にインベントリーファイルで定義された秘密鍵と一致する秘密鍵ごとに秘密鍵が必要です。そうしないと、移行されたデータが暗号化されたままになり、移行後に使用できなくなります。

注記

カスタムリソースで対称暗号化キーを指定する場合、Automation Controller の場合は、このフィールドは secret_key_name と呼ばれることに注意してください。ただし、Automation Hub と Event-Driven Ansible の場合、このフィールドは db_fields_encryption_secret と呼ばれます。

注記

Kubernetes のシークレットでは、Automation Controller と Event-Driven Ansible は同じ stringData キー(secret_key)を使用しますが、Automation Hub は別のキー(database_fields.symmetric.key)を使用します。

手順

  1. 以前のインストールで Ansible Automation Platform のデプロイに使用したインベントリーファイルで古い秘密鍵を見つけます。
  2. 秘密鍵の YAML ファイルを作成します。

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: <controller-resourcename>-secret-key
      namespace: <target-namespace>
    stringData:
      secret_key: <replaceme-with-controller-secret>
    type: Opaque
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: <eda-resourcename>-secret-key
      namespace: <target-namespace>
    stringData:
      secret_key: <replaceme-with-eda-secret>
    type: Opaque
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: <hub-resourcename>-secret-key
      namespace: <target-namespace>
    stringData:
      database_fields.symmetric.key: <replace-me-withdb-fields-encryption-key>
    type: Opaque
    Copy to Clipboard Toggle word wrap
    注記

    admin_password_secret が指定されていない場合、Operator が <resourcename>-admin-password という名前のシークレットで管理者パスワードを検索します。存在しない場合、Operator はパスワードを生成し、そのパスワードから <resourcename>-admin-password という名前のシークレットを作成します。

  3. 秘密鍵 YAML をクラスターに適用します。

    oc apply -f <yaml-file>
    Copy to Clipboard Toggle word wrap

8.2.3. postgresql 設定シークレットの作成

移行を成功させるには、既存のデプロイメントのデータベースへのアクセスを提供する必要があります。

手順

  1. postgresql 設定シークレットの yaml ファイルを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <resourcename>-old-postgres-configuration
      namespace: <target namespace>
    stringData:
      host: "<external ip or url resolvable by the cluster>"
      port: "<external port, this usually defaults to 5432>"
      database: "<desired database name>"
      username: "<username to connect as>"
      password: "<password to connect with>"
    type: Opaque
    Copy to Clipboard Toggle word wrap
  2. postgresql 設定の yaml をクラスターに適用します。
oc apply -f <old-postgres-configuration.yml>
Copy to Clipboard Toggle word wrap

8.2.4. ネットワーク接続の確認

データの移行を成功させるには、新しい Operator デプロイメントから以前のデプロイメントデータベースへのネットワーク接続があることを確認します。

前提条件

既存のデプロイメントのホストおよびポート情報を書き留めておきます。この情報は、conf.d ディレクトリーにある postgres.py ファイルにあります。

手順

  1. yaml ファイルを作成して、新しいデプロイメントと以前のデプロイメントデータベース間の接続を確認します。

    apiVersion: v1
    kind: Pod
    metadata:
        name: dbchecker
    spec:
      containers:
        - name: dbchecker
          image: registry.redhat.io/rhel8/postgresql-13:latest
          command: ["sleep"]
          args: ["600"]
    Copy to Clipboard Toggle word wrap
  2. 接続チェッカーの yaml ファイルを新規プロジェクトのデプロイメントに適用します。

    oc project ansible-automation-platform
    oc apply -f connection_checker.yaml
    Copy to Clipboard Toggle word wrap
  3. 接続チェッカー Pod が実行されていることを確認します。

    oc get pods
    Copy to Clipboard Toggle word wrap
  4. Pod シェルに接続します。

    oc rsh dbchecker
    Copy to Clipboard Toggle word wrap
  5. Pod でシェルセッションが開いたら、新規プロジェクトが古いプロジェクトクラスターに接続できることを確認します。

    pg_isready -h <old-host-address> -p <old-port-number> -U awx
    Copy to Clipboard Toggle word wrap

    <old-host-address>:<old-port-number> - accepting connections
    Copy to Clipboard Toggle word wrap

8.3. Ansible Automation Platform Operator へのデータの移行

秘密鍵 postgresql 認証情報を設定し、ネットワーク接続を検証し、Ansible Automation Platform Operator をインストールした後に、データを移行する前にカスタムリソースコントローラーオブジェクトを作成する必要があります。

8.3.1. AutomationController オブジェクトの作成

以下の手順を使用して AutomationController カスタムリソースオブジェクトを作成します。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. プロジェクトの namespace にインストールされている Ansible Automation Platform Operator を選択します。
  4. Automation Controller タブを選択します。
  5. Create AutomationController をクリックします。オブジェクトは、Form view または YAML view から作成できます。Form view では次の入力を使用できます。

    1. 新しいデプロイメントの名前を入力します。
    2. Advanced configurations:

      1. Secret Key リストから secret key secret を選択します。
      2. Old Database Configuration Secret リストから、old postgres configuration secret を選択します。
    3. Create をクリックします。

8.3.2. AutomationHub オブジェクトの作成

AutomationHub カスタムリソースオブジェクトを作成するには、以下の手順を使用します。

手順

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. プロジェクトの namespace にインストールされている Ansible Automation Platform Operator を選択します。
  4. Automation Hub タブを選択します。
  5. Create AutomationHub をクリックします。
  6. 新しいデプロイメントの名前を入力します。
  7. Advanced configurations で、secret key secretpostgres configuration secret を選択します。
  8. Create をクリックします。

8.4. 移行後のクリーンアップ

データの移行後に、不要なインスタンスグループを削除し、以前のデータベース設定シークレット を Automation Controller リソース定義からリンクを解除します。

8.4.1. 移行後のインスタンスグループの削除

手順

  1. 移行時に作成したパスワードを使用して、管理者として Red Hat Ansible Automation Platform にログインします。

    注記

    注記:移行時に管理者パスワードを作成しなかった場合、パスワードは自動的に作成されています。このパスワードを確認するには、プロジェクトに移動し、WorkloadsSecrets を選択して、controller-admin-password を開きます。そこから、パスワードをコピーして、Red Hat Ansible Automation Platform password フィールドに貼り付けることができます。

  2. AdministrationInstance Groups を選択します。
  3. コントロールプレーンとデフォルトを除くすべてのインスタンスグループを選択します。
  4. Delete をクリックします。

8.4.2. 移行後の古いデータベース設定シークレットのリンク解除

  1. Red Hat OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. プロジェクトの namespace にインストールされている Ansible Automation Platform Operator を選択します。
  4. Automation Controller タブを選択します。
  5. AutomationController オブジェクトをクリックします。次に、Form view または YAML view でオブジェクトを表示できます。以下の入力は、YAML ビュー で利用できます。
  6. YAML コンテンツの spec セクションで old_postgres_configuration_secret 項目を見つけます。
  7. この項目を含む行を削除します。
  8. Save をクリックします。

第9章 Red Hat OpenShift Container Platform での Red Hat Ansible Automation Platform Operator のアップグレード

Ansible Automation Platform Operator は、OpenShift Container Platform 環境での新しい Red Hat Ansible Automation Platform インスタンスのインストール、アップグレード、およびデプロイメントを簡素化します。

9.1. アップグレードに関する考慮事項

Red Hat Ansible Automation Platform バージョン 2.0 は、Ansible Automation Platform Operator の最初のリリースです。バージョン 2.0 からアップグレードする場合は、Ansible Automation Platform Operator のアップグレード の手順に進みます。

アップグレード先の Red Hat Ansible Automation Platform バージョンでサポートされていないバージョンの OpenShift Container Platform を使用している場合は、アップグレードを行う前に、OpenShift Container Platform クラスターをサポートされているバージョンにアップグレードする必要があります。

必要な OpenShift Container Platform のバージョンを判断するには、Red Hat Ansible Automation Platform のライフサイクル を参照してください。

クラスターのアップグレードに関する詳細は、クラスターの更新 を参照してください。

9.2. 前提条件

新しいバージョンの Ansible Automation Platform Operator にアップグレードするには、以下を行うことが推奨されます。

  • AutomationControllerBackup および AutomationHubBackup オブジェクトを作成します。このサポートについては、Red Hat Ansible Automation Platform バックアップリソースの作成 を参照してください。
  • アップグレードする新しい Ansible Automation Platform バージョンと中間バージョンのリリースノートを確認してください。

9.3. Ansible Automation Platform Operator のアップグレード

OpenShift Container Platform で最新バージョンの Ansible Automation Platform Operator にアップグレードするには、以下を実行します。

手順

  1. OpenShift Container Platform にログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Subscriptions タブを選択します。
  4. Upgrade status で、Upgrade Available をクリックします。
  5. Preview InstallPlan をクリックします。
  6. Approve をクリックします。

第10章 Red Hat Ansible Automation Platform Operator への実行ノードの追加

インストールバンドルをダウンロードしてインストールすることで、実行ノードとともに Ansible Automation Platform Operator を有効にできます。

前提条件

  • Automation Controller のインスタンス。
  • receptor コレクションパッケージがインストールされている。
  • AAP リポジトリー ansible-automation-platform-2.4-for-rhel-{RHEL-RELEASE-NUMBER}-x86_64-rpms が有効化されている。

手順

  1. Red Hat Ansible Automation Platform にログインします。
  2. ナビゲーションパネルで、AdministrationInstances を選択します。
  3. Add をクリックします。
  4. Host Name フィールドに実行ノードのドメイン名または IP を入力します。
  5. オプション: Listener Port フィールドにポート番号を入力します。
  6. Save をクリックします。
  7. Install Bundle の横にあるダウンロードアイコン download をクリックします。ダウンロードが始まります。ファイルの保存場所をメモしておきます。
  8. gz ファイルを展開します。

    注記

    install_receptor.yml Playbook を実行するには、Ansible Galaxy から receptor コレクションをインストールする必要があります (Ansible-galaxy collection install -r requirements.yml)。

  9. ユーザー名と SSH 秘密鍵ファイルを使用して Playbook を更新します。ansible_host に、先ほど入力したホスト名が事前に入力されていることに注意してください。

    all:
       hosts:
          remote-execution:
    	        ansible_host: example_host_name # Same with configured in AAP WebUI
    	        ansible_user: <username> #user provided
    	        Ansible_ssh_private_key_file: ~/.ssh/id_example
    Copy to Clipboard Toggle word wrap
  10. ターミナルを開き、Playbook を保存したディレクトリーに移動します。
  11. バンドルをインストールするために、次のコマンドを実行します。

    ansible-playbook install_receptor.yml -i inventory.yml
    Copy to Clipboard Toggle word wrap
  12. インストールしたら、作成したインスタンスの Playbook をダウンロードして再実行することで、実行ノードをアップグレードできます。

検証

receptor サービスのステータスを確認するには、次のコマンドを実行します。

sudo systemctl status receptor.service
Copy to Clipboard Toggle word wrap

サービスが active (running) 状態であることを確認します。

新しいノードで Playbook が正しく実行されるかどうかを確認するには、次のコマンドを実行します。

watch podman ps
Copy to Clipboard Toggle word wrap

関連情報

第11章 Ansible Automation Platform Resource Operator

11.1. リソース Operator の概要

リソース Operator は、Automation Controller デプロイメントを作成した後にデプロイできるカスタムリソース (CR) です。Resource Operator を使用すると、YAML ファイルを使用してプロジェクト、ジョブテンプレート、およびインベントリーを定義できます。これらの YAML ファイルは、Automation Controller によってこれらのリソースを作成するために使用されます。YAML コードのキーと値の入力を求める Form view を通じて YAML を作成できます。あるいは、YAML を直接操作するには、YAML view を選択します。

現在、Resource Operator によって提供されるカスタムリソースは 2 つあります。

  • AnsibleJob: Kubernetes シークレット (Automation Controller ホスト URL、トークン) で指定された Automation Controller インスタンスでジョブを起動します。
  • JobTemplate: 指定された Automation Controller インスタンスにジョブテンプレートを作成します。

11.2. Resource Operator の使用

Resource Operator 自体は、ユーザーがオブジェクトを作成するまで何も実行しません。ユーザーが AutomationControllerProject または AnsibleJob リソースを作成するとすぐに、Resource Operator がそのオブジェクトの処理を開始します。

前提条件

  • 選択した Kubernetes ベースのクラスターをインストールします。
  • automation-controller-operator を使用して Automation Controller をデプロイします。

クラスターに automation-controller-resource-operator をインストールした後、Automation Controller インスタンスの接続情報を含む Kubernetes (k8s) シークレットを作成する必要があります。次に、リソース Operator を使用して、Automation Controller インスタンスを管理するための k8s リソースを作成できます。

11.3. リソース Operator の Automation Controller への接続

リソース Operator を Automation Controller に接続するには、Automation Controller インスタンスの接続情報を含む k8s シークレットを作成する必要があります。

手順

Automation Controller UI でユーザーの OAuth2 トークンを作成するには、以下を行います。

  1. ナビゲーションパネルから、AccessUsers を選択します。
  2. トークンを作成するユーザー名を選択します。
  3. Tokens をクリックし、Add をクリックします。
  4. Applications は空のままにしておくことができます。説明を追加し、ScopeRead または Write を選択します。

あるいは、create_oauth2_token 管理コマンドを使用して、コマンドラインで OAuth2 トークンを作成することもできます。

$ controller-manage create_oauth2_token --user example_user
New OAuth2 token for example_user: j89ia8OO79te6IAZ97L7E8bMgXCON2
Copy to Clipboard Toggle word wrap
注記

トークンを作成するときは、有効なユーザーを指定してください。そうでない場合は、ユーザーを指定せずにコマンドを発行しようとしたか、存在しないユーザー名を指定したというエラーメッセージが表示されます。

11.4. Resource Operator の Automation Controller 接続シークレットの作成

接続情報をリソース Operator が利用できるようにするには、トークンとホスト値を使用して k8s シークレットを作成します。

手順

  1. 以下は、接続シークレットの YAML の例です。次の例をファイル (例: automation-controller-connection-secret.yml) に保存します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: controller-access
      type: Opaque
    stringData:
      token: <generated-token>
      host: https://my-controller-host.example.com/
    Copy to Clipboard Toggle word wrap
  2. ホストとトークンの値を使用してファイルを編集します。
  3. kubectl create コマンドを実行して、これをクラスターに適用します。
kubectl create -f controller-connection-secret.yml
Copy to Clipboard Toggle word wrap

11.5. AnsibleJob の作成

AnsibleJob リソースを作成して、Automation Controller で自動化ジョブを起動します。

手順

  1. 起動する接続シークレットとジョブテンプレートを指定します。

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleJob
    metadata:
      generateName: demo-job-1 # generate a unique suffix per 'kubectl create'
    spec:
      connection_secret: controller-access
      job_template_name: Demo Job Template
    Copy to Clipboard Toggle word wrap
  2. インベントリー、追加変数、ジョブの有効期間などの機能を設定します。

    spec:
      connection_secret: controller-access
      job_template_name: Demo Job Template
      inventory: Demo Inventory                    # Inventory prompt on launch needs to be enabled
      runner_image: quay.io/ansible/controller-resource-runner
      runner_version: latest
      job_ttl: 100
      extra_vars:                                  # Extra variables prompt on launch needs to be enabled
         test_var: test
      job_tags: "provision,install,configuration"  # Specify tags to run
      skip_tags: "configuration,restart"           # Skip tasks with a given tag
    Copy to Clipboard Toggle word wrap
    注記

    インベントリーや追加変数を設定する場合は、起動時にプロンプトを有効にする必要があります。Prompt on launch を有効にするには、Automation Controller UI 内で、ResourcesTemplates ページでテンプレートを選択し、Inventory セクションと Variables セクションの横にある Prompt on launch チェックボックスをオンにします。

  3. job_template_name の代わりに workflow_template_name を指定して、AnsibleJob オブジェクトでワークフロージョブテンプレートを起動します。

    apiVersion: tower.ansible.com/v1alpha1
    kind: AnsibleJob
    metadata:
      generateName: demo-job-1 # generate a unique suffix per 'kubectl create'
    spec:
      connection_secret: controller-access
      workflow_template_name: Demo Workflow Template
    Copy to Clipboard Toggle word wrap

11.6. JobTemplate の作成

  • JobTemplate リソースを作成して、Automation Controller にジョブテンプレートを作成します。

    apiVersion: tower.ansible.com/v1alpha1
    kind: JobTemplate
    metadata:
      name: jobtemplate-4
    spec:
      connection_secret: controller-access
      job_template_name: ExampleJobTemplate4
      job_template_project: Demo Project
      job_template_playbook: hello_world.yml
      job_template_inventory: Demo Inventory
    Copy to Clipboard Toggle word wrap

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat