Ansible Automation Platform の移行
Ansible Automation Platform のデプロイメントをあるインストールタイプから別のインストールタイプに移行する
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com からテクニカルサポートに連絡してリクエストを送信してください。
テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat では、実稼働環境での使用を推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
第1章 概要と目的 リンクのコピーリンクがクリップボードにコピーされました!
RPM ベース、コンテナーベース、OpenShift Container Platform、および Managed Ansible Automation Platform の各デプロイメント間における、サポートされている移行パスについて、段階的なワークフローや移行要件を含めて説明します。
Ansible Automation Platform 2.6 のさまざまな Ansible Automation Platform デプロイメントタイプ間の移行には、特定の手順と考慮事項が必要です。
サポート対象の移行パスは次のとおりです。
| 移行元環境 | 移行先環境 |
|---|---|
| RPM ベースの Ansible Automation Platform | コンテナーベースの Ansible Automation Platform |
| RPM ベースの Ansible Automation Platform | OpenShift Container Platform |
| RPM ベースの Ansible Automation Platform | Managed Ansible Automation Platform |
| コンテナーベースの Ansible Automation Platform | OpenShift Container Platform |
| コンテナーベースの Ansible Automation Platform | Managed Ansible Automation Platform |
現時点では、上記以外の移行はサポートされていません。
Ansible Automation Platform 移行ガイドの目的は、次のとおりです。
- Ansible Automation Platform プラットフォーム間での移行が必要なすべてのコンポーネントと設定をドキュメント化する
- さまざまなデプロイメントシナリオに応じた段階的な移行ワークフローを提供する
- さらなる調査が必要な潜在的な課題や未知の点を特定する
第2章 対象外 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform のどのコンポーネントと設定が移行先環境で手動で再作成する必要があり、移行プロセスでカバーされていないかを把握する
Ansible Automation Platform 移行ガイドでは、Ansible Automation Platform のコアコンポーネントに重点を置いています。次の項目は現在、この移行プロセスの範囲外です。
- Event-Driven Ansible : 移行先環境で Event-Driven Ansible の設定とコンテンツを手動で再作成します。
- インスタンスグループ: 移行後にインスタンスグループ設定を手動で再作成します。
- ハブコンテンツ: Automation Hub でホストされているコンテンツを手動で再インポートまたは再設定します。
- レセプターメッシュのカスタム認証局 (CA): レセプターメッシュのカスタム CA 設定を手動で再設定します。
- 非接続環境: 移行プロセスは非接続環境を対象外としています。
- 実行環境 (デフォルト以外): カスタム実行環境を手動で再構築または再インポートします。
移行先環境でこれらの項目を手動で再作成、インポート、または設定します。
第3章 移行プロセスの概要 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform のインストールタイプ間の移行の準備、エクスポート、アーティファクト作成、インポート、リコンシリエーション、検証手順を含む完全な移行ワークフローについて理解します。
同じ Ansible Automation Platform バージョンの異なるインストールタイプにのみ移行できます。たとえば、RPM バージョン 2.6 からコンテナー化バージョン 2.6 に移行できますが、RPM バージョン 2.4 からコンテナー化バージョンた 2.6 に移行することはできません。
Ansible Automation Platform のインストールタイプ間の移行は、次の一般的なワークフローに従って進めます。
- ソース環境の準備と評価
- ソのエクスポート
- 移行アーティファクトの作成と検証
- 移行先環境の準備と評価
- 移行先環境への移行コンテンツのインポート
- インポート後の移行先環境のリコンサイル
- 移行先環境の検証
第4章 移行の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform デプロイメントを移行するための前提条件です。使用する移行パスについて、必要な条件をすべて満たしていることを確認してから、移行手順に進んでください。
4.1. RPM からコンテナー化バージョンへの移行の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
RPM ベースのデプロイメントからコンテナーベースのデプロイメントに移行する前に、次の前提条件を満たしていることを確認してください。
- Ansible Automation Platform の RPM ベースの移行元デプロイメントがある。
- RPM ベースの移行元デプロイメントが、現在使用しているバージョンの最新の非同期リリースである。
- Ansible Automation Platform のコンテナーベースのデプロイメントに使用する移行先環境が準備されている。
- 使用中の Ansible Automation Platform バージョンの最新リリース用のコンテナー化バージョンのインストールプログラムをダウンロードしている。
- データベースのダンプとバックアップ用に十分なストレージがある。
- 移行元の環境と移行先環境の間にネットワーク接続がある。
4.2. RPM から OpenShift Container Platform への移行の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
RPM ベースのデプロイメントから OpenShift Container Platform デプロイメントに移行する前に、次の前提条件を満たしていることを確認してください。
- Ansible Automation Platform の RPM ベースの移行元デプロイメントがある。
- RPM ベースの移行元デプロイメントが、現在使用しているバージョンの最新の非同期リリースである。
- 移行先の OpenShift Container Platform 環境の準備が完了している。
- 使用中の Ansible Automation Platform バージョンの最新リリースで、Ansible Automation Platform Operator が利用できる。
- 内部データベース構成にするか、外部データベース構成にするかを決定した。
- 内部 Redis 構成にするか、外部 Redis 構成にするかを決定した。
- 移行元の環境と移行先環境の間にネットワーク接続がある。
4.3. RPM から Managed Ansible Automation Platform への移行の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
RPM ベースのデプロイメントから Managed Ansible Automation Platform デプロイメントに移行する前に、次の前提条件を満たしていることを確認してください。
- Ansible Automation Platform の RPM ベースの移行元デプロイメントがある。
- 移行元のデプロイメントが、現在使用している Ansible Automation Platform バージョンの最新リリースである。
- 移行先の Managed Ansible Automation Platform デプロイメントがある。
- 移行前に、移行元のデプロイメントでローカル認証を有効にした。
- 移行前に、移行元のデプロイメントでローカル管理者アカウントが機能している。これを確認するには、移行元のデプロイメントへの正常なログインを実行します。
- 移行プロセス全体を通じてバックアップを保持するための計画、および移行が正常に完了するまで、既存の Ansible Automation Platform デプロイメントを確実に動作させ続けるための計画がある。
セルフホスト型の Ansible Automation Platform デプロイメントから Managed Ansible Automation Platform デプロイメントへの移行に基づく、環境の変更に向けた計画がある。
- ジョブログの保持期間が、お客様が設定した期間から 30 日間に変更されます。
- コントロールプレーンをマネージドサービスに移動すると、ネットワークの変更が発生します。
- 自動化メッシュを再設定する必要があります。
- URL の変更に対応するために、移行後にシングルサインオン (SSO) アイデンティティープロバイダーを再設定または再作成する必要があります。
4.4. コンテナー化バージョンから OpenShift Container Platform への移行の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーベースのデプロイメントから OpenShift Container Platform デプロイメントに移行する前に、次の前提条件を満たしていることを確認してください。
- Ansible Automation Platform のコンテナーベースの移行元デプロイメントがある。
- 移行元デプロイメントが、現在使用しているバージョンの最新の非同期リリースである。
- 移行先の OpenShift Container Platform 環境の準備が完了している。
- 使用中の Ansible Automation Platform バージョンの最新リリースで利用可能な Ansible Automation Platform Operator がある。
- 内部データベース構成にするか、外部データベース構成にするかを決定した。
- 内部 Redis 構成にするか、外部 Redis 構成にするかを決定した。
- 移行元の環境と移行先環境の間にネットワーク接続がある。
4.5. コンテナー化バージョンから Managed Ansible Automation Platform への移行の前提条件 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーベースのデプロイメントから Managed Ansible Automation Platform デプロイメントに移行する前に、次の前提条件を満たしていることを確認してください。
- Ansible Automation Platform のコンテナーベースの移行元デプロイメントがある。
- 移行元のデプロイメントが、現在使用している Ansible Automation Platform バージョンの最新リリースである。
- 移行先の Managed Ansible Automation Platform デプロイメントがある。
- 移行前に、移行元のデプロイメントでローカル認証を有効にした。
- 移行前に、移行元のデプロイメントでローカル管理者アカウントが機能している。これを確認するには、移行元のデプロイメントへの正常なログインを実行します。
- 移行プロセス全体を通じてバックアップを保持するための計画、および移行が正常に完了するまで、既存の Ansible Automation Platform デプロイメントを確実に動作させ続けるための計画がある。
セルフホスト型の Ansible Automation Platform デプロイメントから Managed Ansible Automation Platform デプロイメントへの移行に基づく、環境の変更に向けた計画がある。
- ジョブログの保持期間が、お客様が設定した期間から 30 日間に変更されます。
- コントロールプレーンをマネージドサービスに移動すると、ネットワークの変更が発生します。
- 自動化メッシュを再設定する必要があります。
- URL の変更に対応するために、移行後にシングルサインオン (SSO) アイデンティティープロバイダーを再設定または再作成する必要があります。
第5章 移行アーティファクトの構造と検証 リンクのコピーリンクがクリップボードにコピーされました!
移行アーティファクトは、移行元環境からの必要なすべてのデータと設定をパッケージ化します。移行を確実に成功させるため、その構造と内容を検証します。
5.1. アーティファクトの構造 リンクのコピーリンクがクリップボードにコピーされました!
移行アーティファクトは、Ansible Automation Platform のデプロイメントを転送するために必要なすべてのコンポーネントを含む包括的なパッケージです。
アーティファクトは次のように構造化してください。
/
manifest.yml
secrets.yml
sha256sum.txt
-> controller:
controller.pgc
-> custom_configs:
foo.py
bar.py
-> gateway:
gateway.pgc
-> hub:
hub.pgc
5.2. マニフェストファイル リンクのコピーリンクがクリップボードにコピーされました!
manifest.yml ファイルは、移行アーティファクトの主要なメタデータドキュメントとして機能します。これには、移行元環境からの重要なバージョン管理とコンポーネント情報が含まれています。
マニフェストは次のように構造化してください。
---
aap_version: X.Y # The version being migrated
platform: rpm # The source platform type
components:
- name: controller
version: x.y.z
- name: hub
version: x.y.z
- name: gateway
version: x.y.z
5.3. シークレットファイル リンクのコピーリンクがクリップボードにコピーされました!
移行アーティファクト内の secrets.yml ファイルには、サービス間の認証に必要な重要な Django SECRET_KEY 値が含まれています。
シークレットファイルは次のように構造化してください。
controller_pg_database: <redacted>
controller_secret_key: <redacted>
gateway_pg_database: <redacted>
gateway_secret_key: <redacted>
hub_pg_database: <redacted>
hub_secret_key: <redacted>
hub_db_fields_encryption_key: <redacted>
secrets.yml ファイルは必ず暗号化し、セキュアな場所に保管してください。
5.4. 移行アーティファクト作成チェックリスト リンクのコピーリンクがクリップボードにコピーされました!
このチェックリストを使用して、移行アーティファクトを検証してください。
データベースダンプ: 各コンポーネントの完全なデータベースダンプを含めます。
-
Automation Controller のデータベース (
controller.pgc) がアーティファクト内に存在することを確認します。 -
Automation Hub のデータベース (
hub.pgc) がアーティファクト内に存在することを確認します。 -
プラットフォームゲートウェイのデータベース (
gateway.pgc) がアーティファクト内に存在することを確認します。
-
Automation Controller のデータベース (
シークレットダンプ: すべてのセキュリティー関連情報をエクスポートして含めます。
-
すべてのシークレット値が
secrets.ymlファイルに存在することを検証します。
-
すべてのシークレット値が
カスタム設定: 移行元環境のすべてのカスタマイズをパッケージ化します。
-
カスタムの Python スクリプトまたはモジュール (たとえば、
foo.py、bar.py) がアーティファクトに存在することを確認します。 - 非標準の設定や環境固有の設定をドキュメント化します。
-
カスタムの Python スクリプトまたはモジュール (たとえば、
データベース情報: データベースの詳細をドキュメント化します。
- すべてのコンポーネントのデータベース名を含めます。
- データベースのユーザーと必要な権限をドキュメント化します。
- データベース固有の設定や最適化がある場合は、それを記録しておきます。
検証: アーティファクトの整合性と完全性を確認します。
- 必要なすべてのファイルがアーティファクトに含まれていることを確認します。
- 含まれているすべてのデータベースファイルにチェックサムが存在することを確認します。
- アーティファクトの構造とアクセシビリティーをテストします。
- 移行先環境にセキュアに転送するために、アーティファクトを暗号化することを検討してください。
- 既知の制限事項や特別な考慮事項をドキュメント化します。
第6章 移行元環境 リンクのコピーリンクがクリップボードにコピーされました!
既存の Ansible Automation Platform デプロイメントからデータを準備してエクスポートします。エクスポートしたデータは、新しい環境の設定に使用する重要な移行アーティファクトとなります。
6.1. RPM ベースの Ansible Automation Platform リンクのコピーリンクがクリップボードにコピーされました!
RPM ベースの Ansible Automation Platform デプロイメントからデータを準備してエクスポートします。
6.1.1. 移行元環境の準備と評価 リンクのコピーリンクがクリップボードにコピーされました!
移行を開始する前に、現在の RPM デプロイメントをドキュメント化して、移行プロセス全体と移行先環境の設定時に参照として使用します。
手順
現在の RPM デプロイメントのトポロジー全体をドキュメント化します。
- すべてのサーバー、ノード、およびそれらのロール (コントロールノード、実行ノード、データベースサーバーなど) を詳細に描写します。
- デプロイメント内の各サーバーのホスト名、IP アドレス、および機能を記録します。
- コンポーネント間のネットワーク設定をドキュメント化します。
Ansible Automation Platform のバージョン情報:
- 現在デプロイされている Ansible Automation Platform の正確なバージョン (X.Y) を記録します。
各コンポーネントの特定のバージョンをドキュメント化します。
- Automation Controller のバージョン
- Automation Hub のバージョン
- プラットフォームゲートウェイのバージョン
データベースの設定:
- 各コンポーネントのデータベース名
- データベースのユーザーとロール
- 接続パラメーターと認証方法
- カスタムの PostgreSQL 設定または最適化
6.1.2. 移行元環境のエクスポート リンクのコピーリンクがクリップボードにコピーされました!
移行元環境から、移行に必要なデータと設定をエクスポートします。
手順
PostgreSQL データベースのバージョンが PostgreSQL バージョン 15 であることを確認します。
データベースサーバーに接続し、
postgresユーザーとして次のコマンドを実行すると、現在の PostgreSQL バージョンを確認できます。$ psql -c 'SELECT version();'重要移行プロセスを正常に実行するには、PostgreSQL バージョン 15 が厳密に要求されます。PostgreSQL 13 以前を実行している場合は、移行を続行する前にバージョン 15 にアップグレードしてください。
Ansible Automation Platform によって管理されるデータベースを使用している場合は、インストールプログラムを再実行して PostgreSQL バージョンをアップグレードしてください。お客様提供の (外部) データベースを使用している場合は、データベース管理者またはサービスプロバイダーに連絡してバージョンを確認し、必要に応じてアップグレードの準備をしてください。
移行元環境の完全なバックアップを作成します。
$ ./setup.sh -e 'backup_dest=/path/to/backup_dir/' -b各コンポーネントグループの 1 つのノードから接続設定を取得します。
コマンドごとに、ホストにアクセスして
rootユーザーになります。Automation Controller ノードにアクセスして、次のコマンドを実行します。
# awx-manage print_settings | grep '^DATABASES'Automation Hub ノードにアクセスして、次のコマンドを実行します。
# grep '^DATABASES' /etc/pulp/settings.pyプラットフォームゲートウェイノードにアクセスして、次のコマンドを実行します。
# aap-gateway-manage print_settings | grep '^DATABASES'
手動で作成したアーティファクトをプラットフォームゲートウェイノードに一時的に配置します。
# mkdir -p /tmp/backups/artifact/{controller,gateway,hub}# mkdir -p /tmp/backups/artifact/controller/custom_configs# touch /tmp/backups/artifact/secrets.yml# cd /tmp/backups/artifact/データベースのサイズを検証し、ファイルシステムに
pg_dump用の十分な領域があることを確認します。データベースサーバーに接続し、
postgresユーザーとして次のコマンドを実行すると、データベースのサイズを確認できます。$ psql -c '\l+'次のステップを実行する前に、必要に応じてファイルシステムのサイズを調整するか、外部ファイルシステムをマウントします。
注記これらのコマンドは、すべてのターゲットファイルを
/tmpファイルシステムに送信します。実際の環境のニーズに合わせてコマンドを調整します。プラットフォームゲートウェイノードで、すべてのコンポーネントのデータベースダンプを実行し、作成したアーティファクト内に保存します。
# psql -h <pg_hostname> -U <component_pg_user> -d <database_name> -t -c 'SHOW server_version;' # ensure connectivity to the database# pg_dump -h <pg_hostname> -U <component_pg_user> -d <component_pg_name> --clean --create -Fc -f <component>/<component>.pgc# ls -ld <component>/<component>.pgc# echo "<component>_pg_database: <database_name>" >> secrets.yml ## Add the database name for the component to the secrets file各コンポーネントグループの 1 つのノードから RPM 環境のシークレットをエクスポートします。
以下の各ステップでは、
rootユーザーを使用してコマンドを実行します。Automation Controller ノードにアクセスし、シークレットキーを収集して、
secrets.ymlファイルのcontroller_secret_key値に追加します。# cat /etc/tower/SECRET_KEYAutomation Hub ノードにアクセスし、シークレットキーを収集して、
secrets.ymlファイルのhub_secret_key値に追加します。# grep '^SECRET_KEY' /etc/pulp/settings.py | awk -F'=' '{ print $2 }'Automation Hub ノードにアクセスし、
database_fields.symmetric.key値を収集して、secrets.ymlファイルのhub_db_fields_encryption_key値に追加します。# cat /etc/pulp/certs/database_fields.symmetric.keyプラットフォームゲートウェイノードにアクセスし、シークレットキーを収集して、
secrets.ymlファイルのgateway_secret_key値に追加します。# cat /etc/ansible-automation-platform/gateway/SECRET_KEY
Automation Controller のカスタム設定をエクスポートします。
/etc/tower/conf.dにカスタム設定が存在する場合は、それを/tmp/backups/artifact/controller/custom_configsにコピーします。インストールプログラムによって管理され、カスタムとはみなされない Automation Controller 上の設定ファイル:
-
/etc/tower/conf.d/postgres.py -
/etc/tower/conf.d/channels.py -
/etc/tower/conf.d/caching.py -
/etc/tower/conf.d/cluster_host_id.py
-
アーティファクトをパッケージ化します。
# cd /tmp/backups/artifact/# [ -f sha256sum.txt ] && rm -f sha256sum.txt; find . -type f -name "*.pgc" -exec sha256sum {} \; >> sha256sum.txt# cat sha256sum.txt# cd ..# tar cf artifact.tar artifact# sha256sum artifact.tar > artifact.tar.sha256# sha256sum --check artifact.tar.sha256# tar tvf artifact.tartar tvf artifact.tarの出力例:drwxr-xr-x ansible/ansible 0 2025-05-08 16:48 artifact/ drwxr-xr-x ansible/ansible 0 2025-05-08 16:33 artifact/controller/ -rw-r--r-- ansible/ansible 732615 2025-05-08 16:26 artifact/controller/controller.pgc drwxr-xr-x ansible/ansible 0 2025-05-08 16:33 artifact/controller/custom_configs/ drwxr-xr-x ansible/ansible 0 2025-05-08 16:11 artifact/gateway/ -rw-r--r-- ansible/ansible 231155 2025-05-08 16:28 artifact/gateway/gateway.pgc drwxr-xr-x ansible/ansible 0 2025-05-08 16:26 artifact/hub/ -rw-r--r-- ansible/ansible 29252002 2025-05-08 16:26 artifact/hub/hub.pgc -rw-r--r-- ansible/ansible 614 2025-05-08 16:24 artifact/secrets.yml -rw-r--r-- ansible/ansible 338 2025-05-08 16:48 artifact/sha256sum.txt-
artifact.tarとartifact.tar.sha256をローカルマシンにダウンロードするか、scpコマンドを使用してターゲットノードに転送します。
6.2. コンテナーベースの Ansible Automation Platform リンクのコピーリンクがクリップボードにコピーされました!
コンテナーベースの Ansible Automation Platform デプロイメントからデータを準備してエクスポートします。
6.2.1. 移行元環境の準備と評価 リンクのコピーリンクがクリップボードにコピーされました!
現在のコンテナー化バージョンのデプロイメント設定、トポロジー、およびコンポーネントをドキュメント化して、移行のための包括的なリファレンスを作成します。
手順
現在のコンテナー化バージョンのデプロイメントの完全なトポロジーをドキュメント化します。
- すべてのサーバー、ノード、およびそれらのロール (コントロールノード、実行ノード、データベースサーバーなど) を詳細に描写します。
- デプロイメント内の各サーバーのホスト名、IP アドレス、および機能を記録します。
- コンポーネント間のネットワーク設定をドキュメント化します。
Ansible Automation Platform のバージョン情報:
- 現在デプロイされている Ansible Automation Platform の正確なバージョン (X.Y) を記録します。
各コンポーネントの特定のバージョンをドキュメント化します。
- Automation Controller のバージョン
- Automation Hub のバージョン
- プラットフォームゲートウェイのバージョン
データベースの設定:
- 各コンポーネントのデータベース名
- データベースのユーザーとロール
- 接続パラメーターと認証方法
- カスタムの PostgreSQL 設定または最適化
- すべてのカスタムの構成と設定を特定します。
- コンテナーのリソース割り当てとボリュームをドキュメント化します。
6.2.2. 移行元環境のエクスポート リンクのコピーリンクがクリップボードにコピーされました!
ソースのコンテナー化バージョンの Ansible Automation Platform デプロイメントからデータベース、シークレット、カスタム設定をエクスポートして、移行アーティファクトを作成します。
手順
PostgreSQL データベースのバージョンが PostgreSQL バージョン 15 であることを確認します。
データベースサーバーに接続し、
postgresユーザーとして次のコマンドを実行すると、現在の PostgreSQL バージョンを確認できます。$ podman exec -it postgresql bash -c 'psql -c "SELECT version();"'重要移行プロセスを正常に実行するには、PostgreSQL バージョン 15 が厳密に要求されます。PostgreSQL 13 以前を実行している場合は、移行を続行する前にバージョン 15 にアップグレードしてください。
Ansible Automation Platform によって管理されるデータベースを使用している場合は、インストールプログラムを再実行して PostgreSQL バージョンをアップグレードしてください。お客様提供の (外部) データベースを使用している場合は、データベース管理者またはサービスプロバイダーに連絡してバージョンを確認し、必要に応じてアップグレードの準備をしてください。
移行元環境の完全なバックアップを作成します。
$ ansible-playbook -i <path_to_inventory> ansible.containerized_installer.backup各コンポーネントグループの 1 つのノードから接続設定を取得します。
Automation Controller ノードにアクセスして、次のコマンドを実行します。
$ podman exec -it automation-controller-task bash -c 'awx-manage print_settings | grep '^DATABASES'Automation Hub ノードにアクセスして、次のコマンドを実行します。
$ podman exec -it automation-hub-api bash -c "pulpcore-manager diffsettings | grep '^DATABASES'"プラットフォームゲートウェイノードにアクセスして、次のコマンドを実行します。
$ podman exec -it automation-gateway bash -c "aap-gateway-manage print_settings | grep '^DATABASES'"
データベースのサイズを検証し、ファイルシステムに
pg_dump用の十分な領域があることを確認します。データベースサーバーに接続し、
postgresユーザーとして次のコマンドを実行すると、データベースのサイズを確認できます。$ podman exec -it postgresql bash -c 'psql -c "\l+"'次のステップを実行する前に、必要に応じてファイルシステムのサイズを調整するか、外部ファイルシステムをマウントします。
注記これらのコマンドは、すべてのターゲットファイルを
/tmpファイルシステムに送信します。実際の環境のニーズに合わせてコマンドを調整します。手動で作成したアーティファクトをプラットフォームゲートウェイノードに一時的に配置します。
# mkdir -p /tmp/backups/artifact/{controller,gateway,hub}# mkdir -p /tmp/backups/artifact/controller/custom_configs# touch /tmp/backups/artifact/secrets.yml# cd /tmp/backups/artifact/プラットフォームゲートウェイノードで、すべてのコンポーネントのデータベースダンプを実行し、先ほど作成したアーティファクト内に保存します。
psqlコマンドとpg_restoreコマンドを実行するには、一時コンテナーを作成し、その中でコマンドを実行する必要があります。このコマンドはデータベースノードから実行する必要があります。$ podman run -it --rm --name postgresql_restore_temp --network host --volume ~/aap/tls/extracted:/etc/pki/ca-trust/extracted:z --volume ~/aap/postgresql/server.crt:/var/lib/pgsql/server.crt:ro,z --volume ~/aap/postgresql/server.key:/var/lib/pgsql/server.key:ro,z --volume /tmp/backups/artifact:/var/lib/pgsql/backups:ro,z registry.redhat.io/rhel8/postgresql-15:latest bash注記このコマンドは、イメージが
registry.redhat.io/rhel8/postgresql-15:latestであることを前提としています。イメージが見つからない場合は、podman images lsを使用して、ユーザーが使用できるイメージを確認してください。上記のコマンドを実行すると、
postgresql_restore_tempという名前のコンテナー内でシェルが開き、アーティファクトが/var/lib/pgsql/backupsにマウントされます。また、正しい証明書を解決できるように、PostgreSQL 証明書がマウントされます。bash-4.4$ cd /var/lib/pgsql/backups bash-4.4$ psql -h <pg_hostname> -U <component_pg_user> -d <database_name> -t -c 'SHOW server_version;' # ensure connectivity to db bash-4.4$ pg_dump -h <pg_hostname> -U <component_pg_user> -d <component_pg_name> --clean --create -Fc -f <component>/<component>.pgc bash-4.4$ ls -ld <component>/<component>.pgc bash-4.4$ echo "<component>_pg_database: <database_name>" >> secrets.yml ## Add the DB name for the component to the secrets fileこのデータを収集したら、この一時コンテナーを終了します。
各コンポーネントグループの 1 つのノードから、コンテナー環境のシークレットをエクスポートします。
以下の各ステップでは、
rootユーザーを使用してコマンドを実行します。Automation Controller ノードにアクセスし、シークレットキーを収集して、
secrets.yamlファイルのcontroller_secret_key値に追加します。$ podman secret inspect --showsecret --format "{{.SecretData}}" controller_secret_keyAutomation Hub ノードにアクセスし、シークレットキーを収集して、
secrets.yamlファイルのhub_secret_key値に追加します。$ podman secret inspect --showsecret --format "{{.SecretData}}" hub_secret_keyAutomation Hub ノードにアクセスし、
database_fields.symmetric.key値を収集して、secrets.yamlファイルのhub_db_fields_encryption_key値に追加します。$ podman secret inspect --showsecret --format "{{.SecretData}}" hub_database_fieldsプラットフォームゲートウェイノードにアクセスし、シークレットキーを収集して、
secrets.yamlファイルのgateway_secret_key値に追加します。$ podman secret inspect --showsecret --format "{{.SecretData}}" gateway_secret_key
Automation Controller のカスタム設定をエクスポートします。
コンテナー化されたインストール環境のインベントリーに
extra_settingsが存在する場合は、それを新しいファイルにコピーし、/tmp/backups/artifact/controller/custom_configsに保存します。アーティファクトをパッケージ化します。
# cd /tmp/backups/artifact/ # [ -f sha256sum.txt ] && rm -f sha256sum.txt; find . -type f -name "*.pgc" -exec sha256sum {} \; >> sha256sum.txt # cat sha256sum.txt # cd .. # tar cf artifact.tar artifact # sha256sum artifact.tar > artifact.tar.sha256 # sha256sum --check artifact.tar.sha256 # tar tvf artifact.tartar tvf artifact.tarの出力例:drwxr-xr-x ansible/ansible 0 2025-05-08 16:48 artifact/ drwxr-xr-x ansible/ansible 0 2025-05-08 16:33 artifact/controller/ -rw-r--r-- ansible/ansible 732615 2025-05-08 16:26 artifact/controller/controller.pgc drwxr-xr-x ansible/ansible 0 2025-05-08 16:33 artifact/controller/custom_configs/ drwxr-xr-x ansible/ansible 0 2025-05-08 16:11 artifact/gateway/ -rw-r--r-- ansible/ansible 231155 2025-05-08 16:28 artifact/gateway/gateway.pgc drwxr-xr-x ansible/ansible 0 2025-05-08 16:26 artifact/hub/ -rw-r--r-- ansible/ansible 29252002 2025-05-08 16:26 artifact/hub/hub.pgc -rw-r--r-- ansible/ansible 614 2025-05-08 16:24 artifact/secrets.yml -rw-r--r-- ansible/ansible 338 2025-05-08 16:48 artifact/sha256sum.txt-
artifact.tarとartifact.tar.sha256をローカルマシンにダウンロードするか、scpコマンドを使用してターゲットノードに転送します。
第7章 移行先環境 リンクのコピーリンクがクリップボードにコピーされました!
移行先の Ansible Automation Platform 環境を準備、設定、検証します。
7.1. コンテナーベースの Ansible Automation Platform リンクのコピーリンクがクリップボードにコピーされました!
移行先のコンテナーベースの Ansible Automation Platform 環境を準備および評価し、移行したコンテンツをインポートして調整します。
7.1.1. 移行先環境の準備と評価 リンクのコピーリンクがクリップボードにコピーされました!
移行アーティファクトを転送し、コンテナー化バージョンの Ansible Automation Platform をインストールして、移行元環境のトポロジーとデータベース設定に合わせてインベントリーファイルを設定します。
手順
- ファイルシステムのホームフォルダーのサイズを検証し、アーティファクトを転送するのに十分な領域があることを確認します。
-
scpまたは任意のファイル転送方法を使用して、作業するノードにアーティファクトを転送します。プラットフォームゲートウェイノードはほとんどのシステムにアクセスできるため、このノードから作業することを推奨します。ただし、PostgreSQL のダンプにより、アクセスの制限やファイルシステムの領域に制限がある場合は、代わりにデータベースノードから作業してください。 - Ansible Automation Platform ダウンロードページ からコンテナー化された Ansible Automation Platform の最新バージョンをダウンロードします。
- アーティファクトのチェックサムを検証します。
コンテナーを実行しているユーザーのホームフォルダーにアーティファクトを抽出します。
$ cd ~$ sha256sum-check artifact.tar.sha256$ tar xf artifact.tar$ cd artifact$ sha256sum-check sha256sum.txtコンテナー化バージョンのデプロイメント用のインベントリーファイルを生成します。
移行元環境と同じトポロジーになるようにインベントリーファイルを設定します。アーティファクトの
secrets.ymlファイルからコンポーネントデータベース名とsecret_key値を設定します。これは、以下の 2 つの方法で実行できます。
- インベントリーファイルに追加の変数を設定します。
インストールプログラムを実行するときに、
secrets.ymlファイルを追加の変数ファイルとして使用します。方法 1: インベントリーファイル内の追加の変数
$ egrep 'pg_database|_key' inventory controller_pg_database=<redacted> controller_secret_key=<redacted> gateway_pg_database=<redacted> gateway_secret_key=<redacted> hub_pg_database=<redacted> hub_secret_key=<redacted> __hub_database_fields=<redacted>注記__hub_database_fields値は、シークレット内のhub_db_fields_encryption_key値から取得されます。方法 2: 追加の変数ファイル
$ ansible-playbook -i inventory ansible.containerized_installer.install -e @~/artifact/secrets.yml -e "__hub_database_fields='{{ hub_db_fields_encryption_key }}'"
- 移行先のコンテナー環境をインストールして設定します。
- PostgreSQL データベースのバージョンが 15 であることを確認します。
初期のコンテナー環境のバックアップを作成します。
$ ansible-playbook -i <path_to_inventory> ansible.containerized_installer.backup- 新規インストールが正しく機能することを確認します。
7.1.2. 移行先環境への移行コンテンツのインポート リンクのコピーリンクがクリップボードにコピーされました!
移行コンテンツを移行先環境にインポートするには、コンテナー化されたサービスを停止し、データベースダンプをインポートしてから、サービスを再起動します。
手順
データベースを除くコンテナー化されたサービスを停止します。
すべてのノードで、Performance Co-Pilot が設定されている場合は、次のコマンドを実行します。
$ systemctl --user stop pcpAutomation Controller ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user stop automation-controller-task automation-controller-web automation-controller-rsyslog $ systemctl --user stop receptorAutomation Hub ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user stop automation-hub-api automation-hub-content automation-hub-web automation-hub-worker-1 automation-hub-worker-2Event-Driven Ansible ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user stop automation-eda-scheduler automation-eda-daphne automation-eda-web automation-eda-api automation-eda-worker-1 automation-eda-worker-2 automation-eda-activation-worker-1 automation-eda-activation-worker-2プラットフォームゲートウェイノードにアクセスして、次のコマンドを実行します。
$ systemctl --user stop automation-gateway automation-gateway-proxyスタンドアロン Redis を使用する場合はプラットフォームゲートウェイノードにアクセスし、クラスター Redis を使用する場合はインベントリーファイル内の Redis グループの全ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user stop redis-unix redis-tcp注記エンタープライズデプロイメントでは、コンポーネントは別々のノードで実行されます。各コンポーネントのノードでコマンドを実行してください。
データベースダンプをコンテナー環境にインポートします。
Ansible Automation Platform によって管理されるデータベースを使用している場合は、
psqlコマンドとpg_restoreコマンドを実行するために、一時コンテナーを作成する必要があります。このコマンドはデータベースノードから実行します。$ podman run -it --rm --name postgresql_restore_temp --network host --volume ~/aap/tls/extracted:/etc/pki/ca-trust/extracted:z --volume ~/aap/postgresql/server.crt:/var/lib/pgsql/server.crt:ro,z --volume ~/aap/postgresql/server.key:/var/lib/pgsql/server.key:ro,z --volume ~/artifact:/var/lib/pgsql/backups:ro,z registry.redhat.io/rhel8/postgresql-15:latest bash注記上記のコマンドを実行すると、
postgresql_restore_tempという名前のコンテナー内でシェルが開き、アーティファクトが/var/lib/pgsql/backupsにマウントされます。また、正しい証明書を解決できるように、PostgreSQL 証明書がマウントされます。このコマンドは、イメージ
registry.redhat.io/rhel8/postgresql-15:latestが利用可能であることを前提としています。イメージが見つからない場合は、podman images lsを使用して、ユーザーが使用できるイメージを確認してください。また、アーティファクトが現在のユーザーのホームフォルダーにあることも前提としています。アーティファクトが他の場所にある場合は、
~/artifactを必要なパスに変更してください。-
お客様提供の (外部) データベースを使用している場合は、
psqlコマンドとpg_restoreコマンドがインストールされ、データベースにアクセスできる任意のノードからこれらのコマンドを実行できます。不明な場合は、データベース管理者に問い合わせてください。 コンテナー内からデータベースにアクセスし、ユーザーに
CREATEDBロールがあることを確認します。bash-4.4$ psql -h <pg_hostname> -U postgres postgres=# \l Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileg es -------------------------+---------------+----------+-------------+-------------+------------+-----------------+------------------ ----- automationedacontroller | eda | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | automationhub | automationhub | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | awx | awx | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | gateway | gateway | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | libc | ...コンポーネント名ごとに、
CREATEDBロールをOwnerに追加します。以下に例を示します。postgres=# ALTER ROLE awx WITH CREATEDB; postgres=# \qawxは、データベース所有者に置き換えます。CREATEDBを追加したら、アーティファクトがマウントされているパスにアクセスし、pg_restoreコマンドを実行します。bash$ cd /var/lib/pgsql/backups bash$ pg_restore --clean --create --no-owner -h <pg_hostname> -U <component_pg_user> -d template1 <component>/<component>.pgc復元後、ユーザーから権限を削除します。以下に例を示します。
postgres=# ALTER ROLE awx WITH NOCREATEDB; postgres=# \qawxは、ロールを持つ各ユーザーに置き換えます。
データベースを除くコンテナー化されたサービスを起動します。
注記エンタープライズデプロイメントでは、コンポーネントは別々のノードで実行されます。各コンポーネントのノードでコマンドを実行してください。
すべてのノードで、Performance Co-Pilot が設定されている場合は、次のコマンドを実行します。
$ systemctl --user start pcpAutomation Controller ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user start automation-controller-task automation-controller-web automation-controller-rsyslog $ systemctl --user start receptorAutomation Hub ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user start automation-hub-api automation-hub-content automation-hub-web automation-hub-worker-1 automation-hub-worker-2Event-Driven Ansible ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user start automation-eda-scheduler automation-eda-daphne automation-eda-web automation-eda-api automation-eda-worker-1 automation-eda-worker-2 automation-eda-activation-worker-1 automation-eda-activation-worker-2プラットフォームゲートウェイノードにアクセスして、次のコマンドを実行します。
$ systemctl --user start automation-gateway automation-gateway-proxyスタンドアロン Redis を使用する場合はプラットフォームゲートウェイノードにアクセスし、クラスター Redis を使用する場合はインベントリー内の Redis グループの全ノードにアクセスして、次のコマンドを実行します。
$ systemctl --user start redis-unix redis-tcp
7.1.3. インポート後の移行先環境の調整 リンクのコピーリンクがクリップボードにコピーされました!
次のインポート後のリコンシリエーション手順を実行して、移行先環境が正しく機能していることを確認します。
手順
プラットフォームゲートウェイ設定のプロビジョニングを解除します。
プラットフォームゲートウェイ設定のプロビジョニング解除を行うには、
automation-gatewayコンテナーを実行しているホストに、4.2.6 と同じルートレスユーザーとして SSH 接続し、以下のコマンドを実行して、プラットフォームゲートウェイのプロキシー設定を削除します。$ podman exec -it automation-gateway bash $ aap-gateway-manage migrate $ aap-gateway-manage shell_plus >>> HTTPPort.objects.all().delete(); ServiceNode.objects.all().delete(); ServiceCluster.objects.all().delete()
カスタムの構成と設定を移行します。
-
インベントリーファイルを編集し、
component_extra_settingsを使用して各コンポーネントに関連するextra_settingsを適用します。
-
インベントリーファイルを編集し、
各コンポーネントの Resource Server Secret Key を更新します。
各コンポーネントの現在の Resource Secret 値を収集します。
$ podman exec -it automation-gateway bash -c 'aap-gateway-manage shell_plus --quiet -c "[print(cl.name, key.secret) for cl in ServiceCluster.objects.all() for key in cl.service_keys.all()]"'現在のシークレット値を検証します。
$ for secret_name in eda_resource_server hub_resource_server controller_resource_server do echo $secret_name podman secret inspect $secret_name --showsecret | grep SecretData doneシークレット値が現在の値と一致しない場合は、既存のシークレットを削除して再作成し、新しい値で更新します。
シークレットを削除します。
$ podman secret rm <SECRET_NAME>シークレットを再作成します。
$ echo "secret_value" | podman secret create <SECRET_NAME> -上記のコマンドの
<SECRET_NAME>プレースホルダーを、各コンポーネントの適切なシークレット名に置き換えます:eda_resource_server(Event-Driven Ansible)、hub_resource_server(Automation Hub)、controller_resource_server(Automation Controller)。
- インストールと同じインベントリーを使用して、移行先環境でインストールプログラムを再実行します。
自動化実行のインスタンスを検証します。
ルートレスユーザーとして、
automation-controller-taskコンテナーを提供するホストに SSH で接続し、次のコマンドを実行して、ソースアーティファクトから孤立したインスタンスを検証して削除します。$ podman exec -it automation-controller-task bash$ awx-manage list_instancesこのクラスターの一部ではなくなったノードを探します。ヘルスチェックに失敗したために capacity が 0 になったノードが良い目印となります。
[ungrouped capacity=0] [DISABLED] node1.example.org capacity=0 node_type=hybrid version=X.Y.Z heartbeat="..." [DISABLED] node2.example.org capacity=0 node_type=execution version=ansible-runner-X.Y.Z heartbeat="..."awx-manageを使用してこれらのノードを削除し、aap-controller-taskインスタンスのみを残します。awx-manage deprovision_instance --host=node1.example.org awx-manage deprovision_instance --host=node2.example.org
Pulp の孤立した Automation Hub コンテンツのリンクを修復します。
Automation Hub アドレスに直接アクセスできる任意のホストから次のコマンドを実行します。
$ curl -d '{\"verify_checksums\": true }' -X POST -k https://<gateway url>/api/galaxy/pulp/api/v3/repair/ -u <gateway_admin_user>:<gateway_admin_password>
インスタンスグループの設定を調整します。
- → → に移動します。
- Instance Group を選択し、Instances タブを選択します。
- 必要に応じてインスタンスの関連付けと関連付けの解除を実行します。
決定環境と認証情報を調整します。
- → に移動します。
- この新しい環境に関連しない、またはアクセスできなくなったレジストリー URL を参照する各決定環境を編集します。たとえば、Automation Hub 決定環境は、移行先の Automation Hub 環境に合わせて変更が必要になる場合があります。
- このような決定環境に関連付けられている各認証情報を選択し、そのアドレスが新しい環境に合致したものであることを確認します。
実行環境と認証情報を調整します。
- → → に移動します。
- 各実行環境イメージを確認し、そのアドレスを新しい環境に照らして検証します。
- → → に移動します。
- 各認証情報を編集し、すべての環境固有の情報が新しい環境に合致したものであることを確認します。
- インスタンスグループを使用した RBAC ルールなど、移行後のさらなるカスタマイズや設定を検証します。
7.1.4. 移行先環境の検証 リンクのコピーリンクがクリップボードにコピーされました!
移行が完了したら、移行先環境内のすべてのコンポーネントが正しく機能していることを検証します。
手順
移行されたすべてのコンポーネントが正しく機能することを確認します。
-
プラットフォームゲートウェイ:
https://<gateway_hostname>/から Ansible Automation Platform URL にアクセスし、ダッシュボードが正しく読み込まれることを確認します。プラットフォームゲートウェイサービスが実行されており、Automation Controller に接続されていることを確認します。 - Automation Controller: Automation Execution で、プロジェクト、インベントリー、およびジョブテンプレートが存在し、設定されていることを確認します。
- Automation Hub: Automation Content で、コレクション、名前空間、およびそれらのコンテンツが表示されることを確認します。
- Event-Driven Ansible (該当する場合): Automation Execution Decisions で、ルール監査、ルールブックアクティベーション、およびプロジェクトにアクセスできることを確認します。
各コンポーネントについて、ログを確認して起動エラーや警告がないことを確認します。
podman logs <container_name>
-
プラットフォームゲートウェイ:
ワークフローと自動化プロセスをテストします。
- ジョブテンプレートの実行: さまざまな認証情報タイプに依存するジョブテンプレートを含む、いくつかの主要なジョブテンプレートを実行します。
- ワークフローテンプレートのテスト: ワークフローテンプレートを実行して、ワークフローノードが正しい順序で実行され、ワークフローが正常に完了することを確認します。
- 実行環境の検証: ジョブが適切な実行環境で実行され、必要な依存関係にアクセスできることを確認します。
- ジョブのアーティファクトの確認: ジョブのアーティファクトが適切に保存され、アクセス可能であることを確認します。
- ジョブのスケジュールの検証: スケジュールしたジョブをテストして、予定時刻に実行されることを確認します。
ユーザーのアクセスと権限を検証します。
- ユーザー認証: さまざまなユーザーアカウントでログイン機能をテストし、認証が正しく機能することを確認します。
- ロールベースアクセス制御: ユーザーが組織、プロジェクト、インベントリー、ジョブテンプレートに対する適切な権限を持っていることを確認します。
- チームメンバーシップ: チームメンバーシップとチームベースの権限がそのまま維持されていることを確認します。
- API アクセス: API トークンをテストし、API アクセスが適切に機能していることを確認します。
- SSO 統合 (該当する場合): シングルサインオン認証が正しく機能していることを確認します。
コンテンツの同期と利用可能性を確認します。
- コレクションの同期: リモートからコレクションを同期できることを確認します。
- コレクションのアップロード: コレクションをアップロードできることを確認します。
- コレクションリポジトリー: Automation Hub がコレクションを利用可能にし、実行環境でそれらを使用できることを確認します。
- プロジェクトの同期: プロジェクトがソース管理リポジトリーのコンテンツを同期できることを確認します。
- 外部コンテンツソース: Automation Hub と Ansible Galaxy (設定されている場合) からの同期をテストします。
- 実行環境の可用性: 必要なすべての実行環境が存在し、実行ノードがそれらにアクセスできることを確認します。
- コンテンツの依存関係: ジョブを実行するときに、システムがコンテンツの依存関係を正しく解決することを確認します。
7.2. OpenShift Container Platform リンクのコピーリンクがクリップボードにコピーされました!
移行先の OpenShift Container Platform 環境を準備および評価し、移行したコンテンツをインポートして調整します。
7.2.1. 移行先環境の準備と評価 リンクのコピーリンクがクリップボードにコピーされました!
移行アーティファクトを転送し、OpenShift Container Platform プロジェクトを作成して、移行元環境に一致する設定で Operator を使用して Ansible Automation Platform をデプロイします。
手順
- Ansible Automation Platform をデプロイするために Ansible Automation Platform Operator を設定します。
- データベース設定 (内部または外部) をセットアップします。
- Redis 設定 (内部または外部) をセットアップします。
- Ansible Automation Platform Operator を使用して Ansible Automation Platform をインストールします。
- 初期の OpenShift Container Platform デプロイメントのバックアップを作成します。
- 新規インストールが正しく機能することを確認します。
7.2.2. 移行先環境への移行コンテンツのインポート リンクのコピーリンクがクリップボードにコピーされました!
環境をインポートするには、Ansible Automation Platform コンポーネントをスケールダウンし、データベースを復元して、暗号化シークレットを置き換え、サービスを再びスケールアップします。
インポートプロセスには、デフォルトの aap 名前空間内の aap という名前の最新バージョンの Ansible Automation Platform と、すべてのデフォルトのデータベース名およびデータベースユーザーが必要です。
手順
Ansible Automation Platform コンポーネントをスケールダウンします。
まず、
idle_aapを使用して Ansible Automation Platform のデプロイメントをスケールダウンします。oc patch ansibleautomationplatform aap --type merge -p '{"spec":{"idle_aap":true}}'コンポーネント Pod が停止するまで待機します。稼働し続けるのは 6 つの Operator Pod のみです。
NAME READY STATUS RESTARTS AGE pod/aap-controller-migration-4.6.13-5swc6 0/1 Completed 0 160m pod/aap-gateway-operator-controller-manager-6b75c95458-4zrxv 2/2 Running 0 26h pod/ansible-lightspeed-operator-controller-manager-b674c55b8-qncjp 2/2 Running 0 45h pod/automation-controller-operator-controller-manager-6b79d48d4cchn 2/2 Running 0 45h pod/automation-hub-operator-controller-manager-5cd674c984-5njfj 2/2 Running 0 45h pod/eda-server-operator-controller-manager-645f4db5-d2flt 2/2 Running 0 45h pod/resource-operator-controller-manager-86b8f7bb54-cvz6d 2/2 Running 0 45hAnsible Automation Platform Gateway Operator と Ansible Automation Platform Controller Operator をスケールダウンします。
oc scale --replicas=0 deployment aap-gateway-operator-controller-manager automation-controller-operator-controller-manager出力例:
deployment.apps/aap-gateway-operator-controller-manager scaled deployment.apps/automation-controller-operator-controller-manager scaled
アイドル状態の Postgres
StatefulSetをスケールアップします。oc scale --replicas=1 statefulset.apps/aap-postgres-15データベースの復元用に一時的な環境を準備します。
適切な設定とサイズで一時的な永続ボリューム要求 (PVC) を作成します。
aap-temp-pvc.yaml--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: aap-temp-pvc namespace: aap spec: accessModes: - ReadWriteOnce resources: requests: storage: 200Gioc create -f aap-temp-pvc.yaml一時的なデプロイメントに使用する既存の PostgreSQL イメージを取得します。
echo $(oc get pod/aap-postgres-15-0 -o jsonpath="{.spec.containers[].image}")マウントされた一時的な PVC を使用して一時的な PostgreSQL デプロイメントを作成します。
aap-temp-postgres.yaml--- kind: Deployment apiVersion: apps/v1 metadata: name: aap-temp-postgres spec: replicas: 1 selector: matchLabels: app: aap-temp-postgres template: metadata: labels: app: aap-temp-postgres spec: containers: - name: aap-temp-postgres image: <postgres image from previous step> command: - /bin/sh - '-c' - sleep infinity imagePullPolicy: Always securityContext: runAsNonRoot: true allowPrivilegeEscalation: false volumeMounts: - name: aap-temp-pvc mountPath: /tmp/aap-temp-pvc volumes: - name: aap-temp-pvc persistentVolumeClaim: claimName: aap-temp-pvcoc create -f aap-temp-postgres.yaml
エクスポートアーティファクトを一時的な PostgreSQL Pod にコピーします。
まず、Pod 名を取得し、それを環境変数として設定します。
export AAP_TEMP_POSTGRES=$(oc get pods --no-headers -o custom-columns="metadata.name" | grep aap-temp-postgres)環境変数をテストします。
echo $AAP_TEMP_POSTGRES出力例:
aap-temp-postgres-7b6c57f87f-s2ldpアーティファクトとチェックサムを PVC にコピーします。
oc cp artifact.tar $AAP_TEMP_POSTGRES:/tmp/aap-temp-pvc/ oc cp artifact.tar.sha256 $AAP_TEMP_POSTGRES:/tmp/aap-temp-pvc/
一時的な PostgreSQL Pod を使用して、データベースを Ansible Automation Platform の PostgreSQL に復元します。
まず、3 つのデータベースすべての PostgreSQL パスワードと PostgreSQL 管理者パスワードを取得します。
echo "" && for secret in aap-controller-postgres-configuration aap-hub-postgres-configuration aap-gateway-postgres-configuration do echo $secret echo "PASSWORD: `oc get secrets $secret -o jsonpath="{.data['password']}" | base64 -d`" echo "USER: `oc get secrets $secret -o jsonpath="{.data['username']}" | base64 -d`" echo "DATABASE: `oc get secrets $secret -o jsonpath="{.data['database']}" | base64 -d`" echo "" done && echo "POSTGRES ADMIN PASSWORD: `oc get secrets aap-gateway-postgres-configuration -o jsonpath="{.data['postgres_admin_password']}" | base64 -d`"一時的な PostgreSQL デプロイメントに入り、コピーしたアーティファクトを含むマウントされた PVC にディレクトリーを変更します。
oc exec -it deployment.apps/aap-temp-postgres -- /bin/bashPod 内で、ディレクトリーを
/tmp/aap-temp-pvcに変更し、その内容をリスト表示します。cd /tmp/aap-temp-pvc && ls -l出力例:
total 2240 -rw-r--r--. 1 1000900000 1000900000 2273280 Jun 13 17:41 artifact.tar -rw-r--r--. 1 1000900000 1000900000 79 Jun 13 17:42 artifact.tar.sha256 drwxrws---. 2 root 1000900000 16384 Jun 13 17:40 lost+foundアーカイブを検証します。
sha256sum --check artifact.tar.sha256出力例:
artifact.tar: OKアーティファクトを抽出し、その内容を確認します。
tar xf artifact.tar && cd artifact && sha256sum --check sha256sum.txt出力例:
./controller/controller.pgc: OK ./gateway/gateway.pgc: OK ./hub/hub.pgc: OKAutomation Controller のデータベースを削除します。
dropdb -h aap-postgres-15 automationcontrollerCREATEDBロールを使用してユーザーを一時的に変更します。postgres=# ALTER USER automationcontroller WITH CREATEDB;データベースを作成します。
createdb -h aap-postgres-15 -U automationcontroller automationcontroller一時的なユーザー権限を元に戻します。
postgres=# ALTER USER automationcontroller NOCREATEDB;Automation Controller のデータベースを復元します。
pg_restore --clean --create --no-owner -h aap-postgres-15 -U automationcontroller -d automationcontroller controller/controller.pgcAutomation Hub のデータベースを復元します。
pg_restore --clean --create --no-owner -h aap-postgres-15 -U automationhub -d automationhub hub/hub.pgcプラットフォームゲートウェイのデータベースを復元します。
pg_restore --clean --create --no-owner -h aap-postgres-15 -U gateway -d gateway gateway/gateway.pgcPod を終了します。
exit
データベースフィールドの暗号化シークレットを置き換え、一時リソースをクリーンアップします。
データベースフィールドの暗号化シークレットを置き換えます。
oc set data secret/aap-controller-secret-key secret_key="<unencoded controller_secret_key value from secrets.yml>"oc set data secret/aap-db-fields-encryption-secret secret_key="<unencoded gateway_secret_key value from secrets.yml>"oc set data secret/aap-hub-db-fields-encryption database_fields.symmetric.key="<unencoded hub_db_fields_encryption_key value from secrets.yml>"一時的な PostgreSQL と PVC をクリーンアップします。
oc delete -f aap-temp-postgres.yamloc delete -f aap-temp-pvc.yaml
Ansible Automation Platform コンポーネントをスケールアップして元の状態に戻します。
プラットフォームゲートウェイと Automation Controller Operator をスケールアップし、プラットフォームゲートウェイ Operator のリコンシリエーションループが完了するまで待機します。
PostgreSQL の
StatefulSetがアイドル状態に戻ります。oc scale --replicas=1 deployment aap-gateway-operator-controller-manager automation-controller-operator-controller-manager出力例:
deployment.apps/aap-gateway-operator-controller-manager scaled deployment.apps/automation-controller-operator-controller-manager scaledoc logs -f $(oc get pods --no-headers -o custom-columns=":metadata.name" | grep aap-gateway-operator)リコンシリエーションが停止するまで待ちます。
出力例:
META: ending play {"level":"info","ts":"2025-06-12T15:41:29Z","logger":"runner","msg":"Ansible-runner exited successfully","job":"5672263053238024330","name":"aap","namespace":"aap"} ----- Ansible Task Status Event StdOut (aap.ansible.com/v1alpha1, Kind=AnsibleAutomationPlatform, aap/aap) ----- PLAY RECAP ********************************************************************* localhost : ok=45 changed=0 unreachable=0 failed=0 skipped=63 rescued=0 ignored=0idle_aapを使用して Ansible Automation Platform をスケールアップして元に戻します。oc patch ansibleautomationplatform aap --type=merge -p '{"spec":{"idle_aap":false}}'出力例:
ansibleautomationplatform.aap.ansible.com/aap patched
aap-gatewayPod が実行されるまで待って、古いサービスエンドポイントをクリーンアップします。出力例:
pod/aap-gateway-6c989b846c-47b91 2/2 Running 0 45sfor i in HTTPPort Route ServiceNode; do; oc exec -it deployment.apps/aap-gateway -- aap-gateway-manage shell -c 'from aap_gateway_api.models import '$i';print('$i'.objects.all().delete())'; done出力例:
(23, {'aap_gateway_api.ServiceAPIRoute': 4, 'aap_gateway_api.AdditionalRoute': 7, 'aap_gateway_api.Route': 11, 'aap_gateway_api.HTTPPort': 1}) (0, {}) (4, {'aap_gateway_api.ServiceNode': 4})awx-manageを実行してインスタンスのプロビジョニングを解除します。Automation Controller Pod を取得します。
export AAP_CONTROLLER_POD=$(oc get pods --no-headers -o custom-columns=":metadata.name" | grep aap-controller-task)環境変数をテストします。
echo $AAP_CONTROLLER_POD出力例:
aap-controller-task-759b6d9759-r59q9Automation Controller Pod に入ります。
oc exec -it $AAP_CONTROLLER_POD -- /bin/bash awx-manage list_instances出力例:
bash-4.4$ [controlplane capacity=642 policy=100%] aap-controller-task-759b6d9759-r59q9 capacity=642 node_type=control version=4.6.15 heartbeat="2025-06-12 21:39:48" node1.example.org capacity=0 node_type=hybrid version=4.6.13 heartbeat="2025-05-30 17:22:11" [default capacity=0 policy=100%] node1.example.org capacity=0 node_type=hybrid version=4.6.13 heartbeat="2025-05-30 17:22:11" node2.example.org capacity=0 node_type=execution version=ansible-runner-2.4.1 heartbeat="2025-05-30 17:22:08"awx-manageを使用して古いノードを削除し、aap-controller-taskのみを残します。awx-manage deprovision_instance --host=node1.example.org awx-manage deprovision_instance --host=node2.example.org
curlコマンドを実行して、Automation Hub ファイルシステムのデータを修復します。curl -d '{\"verify_checksums\": true }' -X POST -k https://<aap url>/api/galaxy/pulp/api/v3/repair/ -u <admin_user>:<restored_admin_password>
7.2.3. インポート後の移行先環境の調整 リンクのコピーリンクがクリップボードにコピーされました!
移行アーティファクトをインポートした後、次の手順を実行して移行先環境を調整します。
手順
-
Django
SECRET_KEYシークレットをソースプラットフォームに合わせて変更します。 - プラットフォームゲートウェイのサービスノードをプロビジョニング解除し、再設定します。
- プラットフォームゲートウェイのノードとサービスの登録ロジックを再実行します。
- コンテナー固有の設定を OpenShift Container Platform に適した形式に変換します。
- コンテナーリソースの割り当てを、OpenShift Container Platform のリソースに合わせて調整します。
7.2.4. 移行先環境の検証 リンクのコピーリンクがクリップボードにコピーされました!
すべての Ansible Automation Platform サービスが実行されていること、認証情報が正しく機能していること、プロジェクト、インベントリー、ジョブテンプレートなどの移行されたコンテンツが OpenShift Container Platform でアクセス可能であることを確認します。
手順
- 移行したすべてのコンポーネントが機能していることを確認します。
- ワークフローと自動化プロセスをテストします。
- ユーザーのアクセスと権限を検証します。
- コンテンツの同期と利用可能性を確認します。
- OpenShift Container Platform 固有の機能との統合をテストします。
7.3. Managed Ansible Automation Platform リンクのコピーリンクがクリップボードにコピーされました!
移行元環境を準備して Managed Ansible Automation Platform デプロイメントに移行し、移行後に移行先環境を調整します。
7.3.1. Managed Ansible Automation Platform への移行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat カスタマーポータルでサポートチケットを送信して、Managed Ansible Automation Platform への移行をリクエストします。
前提条件
- 移行元環境からの移行アーティファクトがある。
手順
Red Hat カスタマーポータルで サポートチケット を送信し、Managed Ansible Automation Platform への移行をリクエストします。
サポートチケットには次の内容を含める必要があります。
- 移行元のインストール環境のタイプ (RPM、コンテナー化、OpenShift)
- Managed Ansible Automation Platform の URL またはデプロイメント名
- 移行元のバージョン (インストーラーまたは Operator バージョン)
- Ansible Site Reliability Engineering (SRE) チームが、サポートチケットで、作成される移行アーティファクトを処理用のセキュアなストレージにアップロードする方法に関する手順を案内します。
- Ansible SRE チームが、特定のターゲットインスタンスに移行アーティファクトをインポートし、サポートチケットを通じてお客様に通知します。
- Ansible SRE チームが移行の成功をお客様に通知します。
7.3.2. 移行後の移行先環境の調整 リンクのコピーリンクがクリップボードにコピーされました!
Managed Ansible Automation Platform に移行した後、必要な設定を更新します。
手順
- ローカル管理者アカウントを使用して Managed Ansible Automation Platform インスタンスにログインし、データがインポートされたことを確認します。
ソースデプロイメントの設定に基づいて、次のアクションを実行します。
- 新しい URL を反映するように、シングルサインオン (SSO) オーセンティケーターとマッピングを再設定します。
新しい URL を反映するように Private Automation Hub コンテンツを更新します。
次のコマンドを実行して、Automation Hub リポジトリーを更新します。
curl -d '{\"verify_checksums\": true }' -X POST -k https://<platform url>/api/galaxy/pulp/api/v3/repair/ -u <admin_user>:<admin_password>- Automation Hub で設定されているすべてのリポジトリーで同期を実行します。
- 移行元の Automation Hub から移行先の Automation Hub にカスタムの実行環境をプッシュします。
- 自動化メッシュを再設定します。
- 移行後、カスタム証明書、カスタムドメイン、プライベートエンドポイント経由の接続の設定など、標準の Site Reliability Engineering (SRE) タスクをサポートチケットを通じてリクエストできます。