TPA and Ansible Tower/Ansible Automation Platform
=================================================

TPAは、RedHat Ansible Automation
PlatformAAPを介した展開をサポートしています。このサポートは、以下で詳細に説明するように、AAPで\ ``deploy``
および\ ``upgrade``
ステップを実行できるようにすることで機能します。デプロイまたはアップグレードを実行する前に、tpaパッケージがインストールされている別のスタンドアロンマシンで構成\ ``configure``
コマンドとプロビジョニング\ ``provision``
コマンドを実行する必要があります。このスタンドアロンマシンで適切なオプションを使用して\ ``configure``
および\ ``provision``
を実行すると、結果のクラスターディレクトリをAAPにインポートできます。サポートはベアメタルプラットフォームに制限されています。

AAPの初期セットアップ
---------------------

TPAがAAPを使用してクラスターを展開する前に、この初期設定を実行する必要があります。

TPA実行環境イメージの追加 管理者
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

バージョン2.4以降、AAPはコンテナイメージを使用してAnsibleプレイブックを実行します。これらのコンテナは実行環境EEと呼ばれ、プレイブックが正常に実行するために必要な依存関係をバンドルしています。その結果、これは、必要なTPA依存関係をすべて解決して使用するには、TPAを含むEEが必要で、展開とアップグレードの実行時にAAPが使用できることを意味します。

..  Note Get an EE::
   独自のイメージをビルドする手順については、 :ref:`TPAのEEをビルドする <TPAのEEをビルドする>` を参照してください。

EDBの顧客は、EDBサポートに連絡して、EEに関するサポートを求めることができます。

AAP管理者として、TPA対応EEイメージを指す使用可能なEEリストにエントリを作成します。

EDB_SUBSCRIPTION_TOKEN資格情報タイプを作成します admin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

AAP管理者として、カスタム資格情報タイプ\ ``EDB_SUBSCRIPTION_TOKEN``
を作成して、EDBサブスクリプションアクセストークンを保持します。

1. AAP UIの[ Credentials Type ]ページに移動します。

2. **Name** フィールドを\ ``EDB_SUBSCRIPTION_TOKEN`` に設定します。

3. 次を **入力構成** フィールドに貼り付けます。

.. code:: yaml

       fields:
       - id: tpa_edb_sub_token
         type: string
         label: EDB_SUBSCRIPTION_TOKEN
         secret: true
       required:
       - tpa_edb_sub_token

4. 次を **Injector Configuration** フィールドに貼り付けます。

.. code:: yaml

       env:
         EDB_SUBSCRIPTION_TOKEN: {{ tpa_edb_sub_token }}

5. 変更を保存します。

6. 新しく追加されたタイプ\ ``EDB_SUBSCRIPTION_TOKEN``
   を使用して資格情報を作成します。

クラスターのセットアップ
------------------------

tpaexecパッケージがインストールされているワークステーションで初期手順を実行します。

TPAワークステーションで
^^^^^^^^^^^^^^^^^^^^^^^

構成
^^^^

次のオプションを含む\ ``tpaexec configure``
コマンドを実行します。\ ``--platform bare`` 、\ ``--use-ansible-tower``
、\ ``--tower-git-repository``

.. code:: shell

   tpaexec configure <clustername> \
            --platform bare \
            --use-ansible-tower https://aac.example.com \
            --tower-git-repository ssh://git@git.example.com/example \
            --hostnames-from <hostnamefile> \
            --architecture PGD-Always-ON \
            --pgd-proxy-routing local \
            --postgresql 16

``--use-ansible-tower``
は、その時点で使用されない場合でも、パラメーターとしてAAPアドレスを想定しています。
``--tower-git-repository``
は、クラスターデータをAAPにインポートするために使用されます。
TPAは、ブランチ名として\ ``cluster_name``
を使用して独自のブランチを作成します。これにより、すべてのクラスターに同じリポジトリを使用できます。
:ref:`クラスター構成 <クラスター構成>` で説明しているように、 ``tpaexec configure``
の他のすべてのオプションは引き続き有効です。

config.ymlの変更
^^^^^^^^^^^^^^^^

``config.yml`` には、トップレベル辞書の\ ``ansible_tower``
が含まれ、これにより、 ``tpaexec provision``
はクラスターをAAP対応クラスターとして扱います。

``config.yml`` を編集して、ノードごとに\ ``ansible_host``
および\ ``{private,public}_ip`` が定義され、\ ``ansible_host``
がAAPが解決可能な値に設定されていることを確認します。必要に応じて、さらに変更または追加を加えます。詳細は、
:ref:`クラスター構成 <クラスター構成>` を参照してください。

インベントリーおよびその他の関連ファイルを生成するには、\ ``tpaexec provision``
を実行します。

AAP UIの場合
^^^^^^^^^^^^

プロジェクト
^^^^^^^^^^^^

gitリポジトリをソースとして使用して、AAPにプロジェクトを追加します。 TPA
EEイメージを使用するようにプロジェクトのデフォルトEEを設定します。

..  Note Project options::
   ジョブを実行する前に変更が正しく同期されるように、 **起動時にリビジョンの更新**を使用することを強くお勧めします。

単一のプロジェクトで複数のインベントリを使用しようとする場合、 **Allow
Branch Override** が必要です。

インベントリ
^^^^^^^^^^^^

空のインベントリを追加します。プロジェクトを外部ソースとして使用し、インベントリファイルとして\ ``inventory/00-cluster_name``
を使用してデータを入力します。

..  Note Inventory options::
   変更が正しく同期されるように、 **リモートインベントリソースからローカルグループとホストを上書きする**を使用することを強くお勧めします。

AAPでTPAの制御の外部にある追加変数を設定しない場合、
**リモートインベントリソースからローカル変数を上書きする**
を使用することをお勧めします。

資格情報
^^^^^^^^

``vault`` 資格情報を作成します。
TPAワークステーションで\ ``tpaexec show-vault <cluster_dir>``
を使用して、ボールトのパスワードを取得できます。

展開中にSSHを介してインベントリノードに接続するには、マシンの資格情報がAAPで利用できることを確認してください。

テンプレートの作成
^^^^^^^^^^^^^^^^^^

テンプレートを作成するには

1. プロジェクトとインベントリを使用するテンプレートを作成します。

2. 次の必要な資格情報を含めます。

   - Vault credential
   - ``EDB_SUBSCRIPTION_TOKEN`` credential
   - マシン資格情報

3. 2つの追加変数を設定します。

.. code:: yaml

       tpa_dir: /opt/EDB/TPA
       cluster_dir: /runner/project

4. プレイブックとして\ ``deploy.yml`` を選択します。

5. クラスターを展開するには、新しいテンプレートに基づいてジョブを実行します。

複数のインベントリに1つのプロジェクトを使用する
-----------------------------------------------

TPAは、関連するgitリポジトリのクラスターごとに異なるブランチ名を使用します。このアプローチでは、複数のクラスターで単一のプロジェクトを使用できます。

Allowブランチオーバーライドオプションを設定します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

AAPプロジェクトで、 **Allow Branch override** オプションを有効にします。

複数のインベントリを定義する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

TPAは、gitリポジトリ内のクラスターごとに異なるブランチ名を使用します。インベントリごとにブランチをオーバーライドすることにより、同じプロジェクトをソースと使用して複数のインベントリを生成できます。

インベントリーごとに資格情報を定義する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

ボールトのパスワードは、TPAクラスターごとに異なるため、インベントリーごとにそれに応じて設定されていることを確認します。

AAPでTPAを更新
--------------

AAPでTPAの更新には、いくつかの追加手順が含まれます。

TPAワークステーションパッケージの更新
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

OSに応じて、OSパッケージと同様にTPAワークステーションパッケージを更新します。
:ref:`TPA installation <TPA installation>` を参照してください。

同じバージョンタグでEEイメージを使用する
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

AAPのEEイメージを変更して、使用されるワークステーションパッケージバージョンと同じバージョンタグを使用します。

クラスターディレクトリでtpaexec relinkを実行します
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``tpaexec relink <cluster_dir> --force``
を実行して、AAPを使用するクラスターが最新の状態であることを確認します。これを行う必要がある場合の例は、TPAインストールを新しいバージョンにアップグレードした後です。
``relink``
コマンドによってコミットされた変更は必ずプッシュしてください。

.. code:: shell

   git status

.. code:: output

   On branch cluster_name
   Your branch is ahead of tower/cluster_name by 1 commit.
     (use "git push" to publish your local commits)
   ...

.. code:: shell

   git push tower

プロジェクトとインベントリの同期
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**ジョブの起動時にリビジョンの更新** と **起動時の更新**
を使用するように設定されていない場合は、それぞれAAP
UIと関連インベントリでプロジェクトを同期します。

TPAのEEをビルドする
-------------------

前提条件
^^^^^^^^

独自のEEイメージをビルドするには、 ``ansible-builder``
を使用することをお勧めします。

必要なものは次のとおりです。

1. ``docker`` または\ ``podman``

2. ``ansible-builder`` および\ ``ansible-navigator`` pythonツールキット

3. `TPA    repo <https://github.com/EnterpriseDB/tpa>`_ からタグ\ ``vA.B.C`` でチェックアウトしたTPAソースコード
   ``vA.B.C`` は、使用するTPAバージョンです。

環境ファイル
^^^^^^^^^^^^

``ansible-builder``
は、環境ファイルを使用して、作業用EEイメージを生成します。

次に、このようなTPAの環境ファイルのテンプレート例を示します。

**execution-environment.yml**

.. code:: yaml

   version: 3
   images:
     base_image:
       name: registry.redhat.io/ansible-automation-platform-24/ee-minimal-rhel9:latest
   dependencies:
     python: << TPA_REPO_CLONE_FOLDER >>/requirements-aap.txt
     galaxy: << TPA_REPO_CLONE_FOLDER >>/collections/requirements.yml
   options:
     package_manager_path: /usr/bin/microdnf

   additional_build_steps:
     append_final:
      - RUN mkdir -p /opt/EDB/TPA
      - COPY << TPA_REPO_CLONE_FOLDER >> /opt/EDB/TPA
      - ENV PYTHONPATH="${PYTHONPATH:+${PYTHONPATH}:}/opt/EDB/TPA/lib"

..  Note Base image::
   ここで使用されるベースイメージには、registry.redhat.io AAPライセンスとともに提供される必要があります。このイメージには、タスクを簡素化する`python 3.12.*` 、`ansible-core==2.16.*` 、`ansible-runner` などのAAP 2.4の要件のほとんどが既に含まれています。

異なるベースイメージには、より多くの\ ``additional_build_steps``
が必要になる場合があります。 `ansible-builder <https://ansible.readthedocs.io/projects/builder/en/latest/>`_ を参照してください

高度な使用のために。

EE buildコマンド
^^^^^^^^^^^^^^^^

次のコマンドは、EEイメージをビルドします。

.. code:: shell

   ansible-builder build \
     --file=execution-environment.yml \
     --container-runtime=<docker/podman> \
     --tag=<your-registry>/<your-namespace>/tpa-ee:vA.B.C \
     --verbosity 2
