Ansible Automation Platform 2.1 の導入

Red Hat Ansible Automation Platform 2.1

概要

このドキュメントは、Ansible Automation Platform 2.1 をデプロイするためのベストプラクティスを提供します。

コメントとフィードバック

オープンソースの精神を大切にしています。リファレンスアーキテクチャーに関するフィードバックやコメントをお聞かせください。文書は社内で確認していますが、何らかの問題や誤字脱字があるかもしれません。フードバックにより、当社は作成文書の品質を向上でき、読者も改善点や内容の拡充などについてご意見いただけます。文書に関するフィードバックは、電子メールで ansible-feedback@redhat.com に送信してください。その際には、メール本文内で文書のタイトルを記載してください。

第1章 概要

Ansible Automation Platform 2.1 リファレンスアーキテクチャーは、可用性の高い Ansible Automation Platform 環境をデプロイするための独創的な設定を提供します。また、Ansible Automation Platform 2.1 をインストールおよび設定するための最新のベストプラクティスを含む段階的なデプロイメント手順について説明しています。これは、Ansible Automation Platform のデプロイを検討しているシステムおよびプラットフォーム管理者に最適です。

このリファレンス環境で使用される環境は、図1.1「リファレンスアーキテクチャーの概要」 の図に示されています。

図1.1 リファレンスアーキテクチャーの概要

overview

上のイメージでは、高可用性のために Ansible サイト 1 および Ansible サイト 2 の 2 つのサイトが含まれています。サイト 1 はアクティブな環境であり、サイト 2 はパッシブな環境です。各サイトには以下が含まれます。

  • 1 つの PostgreSQL データベースを備えた 3 つのノード自動化コントローラークラスター
  • 1 つの PostgreSQL データベースを備えた 3 つのノード自動化ハブクラスター
  • 自動化コントローラークラスターごとに 2 つの実行ノード
  • Red Hat Insights やサービスカタログなどの console.redhat.com サービスへのアクセス

PostgreSQL データベースの HA を実現するために、Git リポジトリーでプッシュイベントまたはマージイベントがトリガーされる際に、Configuration as Code と Git Webhook を組み合わせて使用します。これにより、Ansible サイト 1Ansible サイト 2 の両方で指定されたイベントが設定されます。

最後に、ロギングの一貫性を確保するために、両方の Ansible Automation Platform 環境が使用する高可用性の集中型ロギング環境がインストールされます。

第2章 前提条件

この高可用性 Ansible Automation Platform 2.1 リファレンス環境のインストールでは、サイトで以下を使用します。

  • 3 つのコントロールプレーンノード。
  • 1 つのコントロールプレーンデータベースノード
  • 2 つの実行ノード
  • 3 つの自動化ハブノード
  • 1 つの自動化ハブデータベースノード
  • 自動化ハブのインストールで使用する共有ファイルシステム (/var/lib/pulp)
注記

これらのノードは、物理サーバーである必要はありません。

2.1. ノードの要件

表2.1 実行ノード

実行ノード

必須

注記

RAM

16 Gb

 

CPU

4

  • 自動化を実行します。メモリーと CPU を増やし、フォークを多く実行できるように容量を増加します。

表2.2 Automation Controller ノード

コントロールノード

必須

注記

RAM

16 Gb

 

CPU

4

  • イベントを処理し、プロジェクト更新およびクリーンアップジョブを含むクラスタージョブを実行します。CPU およびメモリーを増やすと、ジョブイベントの処理に役立ちます。

ディスク: サービスノード

40 GB の専用ハードディスク領域

  • コントローラー: ファイルおよび作業ディレクトリーストレージ用に、最小 20 GB を /var/ 専用にします。
  • ストレージボリュームは、最低ベースラインとして IOPS が 1500 となるようにする必要があります。
  • プロジェクトは、制御およびハイブリッドに保存され、ジョブの期間中も実行ノードに保存されます。クラスターに大規模なプロジェクトが多数ある場合は、ディスク領域のエラーを回避するために、/var/lib/awx/projects に 2 倍の GB を追加することを検討してください。

ディスク: データベースノード

20 GB の専用ハードディスク領域

  • 150 GB 以上を推奨
  • ストレージボリュームは、ベースライン IOPS を高くする (1500 以上) 必要があります。

ブラウザー

Mozilla Firefox または Google Chrome の現行のサポートバージョン

 

データベース

PostgreSQL バージョン 12

 

表2.3 自動化ハブノード

自動化ハブノード

必須

注記

RAM

最小 8GB

  • 8 GB のメモリー (Vagrant 試用版のインストールに推奨される最小要件)
  • 8 GB メモリー (外部のスタンドアロン PostgreSQL データベースの最小要件)
  • 設定のフォークに基づく容量については、追加情報を参照してください。

CPU

最小 2 つ

  • 設定のフォークに基づく容量については、追加情報を参照してください。

ディスク: サービスノード

40 GB の専用ハードディスク領域

  • ストレージボリュームは、最低ベースラインとして IOPS が 1500 となるようにする必要があります。

ディスク: データベースノード

20 GB の専用ハードディスク領域

  • 150 GB 以上を推奨
  • ストレージボリュームは、ベースライン IOPS を高くする (1500 以上) 必要があります。

ブラウザー

Mozilla Firefox または Google Chrome の現行のサポートバージョン

 

データベース

PostgreSQL バージョン 12

 

表2.4 データベースノード 3 台

データベースノード 3 台

必須

注記

RAM

16 GB

 

CPU

4

 

ディスク

20 GB の専用ハードディスク領域

  • 最小 20 Gb の専用ディスクスペース
  • 150 GB 以上を推奨
  • ストレージボリュームは、ベースライン IOPS を高くする (1500 以上)
注記

すべての自動化コントローラーデータは PostgreSQL データベースに保存されます。データベースストレージは、マネージドホストの数、ジョブ実行数、ファクトキャッシュに保存されているファクトの数、および個別ジョブのタスク数と共に増加します。たとえば、ホスト 250 台で 1 時間ごと (1 日に 24 回) に 20 個のタスクの Playbook を実行する場合は、毎週 800,000 を超えるイベントを保存します。

データベースに十分な容量が確保されていない場合は、以前のジョブ実行やファクトを定期的に消去する必要があります。詳細は、Management Jobs を参照してください。

2.2. ネットワーク要件

Ansible Automation Platform 2.1 には、Ansible Automation Platform クラスター内のすべてのノードに少なくとも 1 つのネットワークが必要です。

Ansible Automation Platform ダッシュボードにアクセスするには、コントロールプレーンノードが存在するネットワークにアクセスできるブラウザーが必要です。Ansible Automation Platform ダッシュボードに外部からアクセスする場合は、コントロールプレーンノードにパブリック IP アドレスを追加してください。

ネットワーク管理者は、すべてのノードの静的 DHCP アドレスと適切な DNS レコードを設定することを推奨します。これにより、DHCP サーバーがない場合でも、各ノードの IP アドレスが一定に保たれます。静的 IP アドレスを使用するには、IP アドレスを無限リースで予約します。

このリファレンスアーキテクチャーの目的上、DHCP サーバーの設定、DNS レコードの設定、およびロードバランサーの設定は範囲外です。

ネットワーク管理者は、少なくとも次の数の IP アドレスを予約する必要があります。

  1. コントロールプレーンノードごとに 1 つの IP アドレス。
  2. 実行ノードごとに 1 つの IP アドレス。
  3. 自動化ハブノードごとに 1 つの IP アドレス。
  4. コントロールプレーンデータベース用に 1 つの IP アドレス。
  5. 自動化ハブデータベース用に 1 つの IP アドレス。
  6. Ansible Automation Platform サイト 1 のロードバランサー自動化コントローラークラスターアドレス用に 1 つの IP アドレス。
  7. Ansible Automation Platform サイト 2 のロードバランサー自動化コントローラークラスターアドレス用に 1 つの IP アドレス。
  8. Ansible Automation Platform サイト 1 のロードバランサープライベート自動化ハブクラスターアドレス用に 1 つの IP アドレス。
  9. Ansible Automation Platform サイト 2 のロードバランサープライベート自動化ハブクラスターアドレス用に 1 つの IP アドレス。

このリファレンス環境では、サイトごとに 12 個の IP アドレスが予約されています。

次の表は、リファレンス環境の Ansible サイト 1の例を示しています。

使用方法

ホスト名

IP

コントロールプレーン 1

controlplane-1.site1.example.com

192.168.0.10

コントロールプレーン 2

controlplane-2.site1.example.com

192.168.0.11

コントロールプレーン 3

controlplane-3.site1.example.com

192.168.0.12

コントロールプレーンデータベース

controlplane-db.site1.example.com

192.168.0.13

コントロールプレーンクラスターのアドレス

controlplane-cluster.site1.example.com

192.168.0.14

実行ノード 1

executionnode-1.site1.example.com

192.168.0.15

実行ノード 2

executionnode-2.site1.example.com

192.168.0.16

自動化ハブノード 1

automationhub-1.site1.example.com

192.168.0.17

自動化ハブノード 2

automationhub-2.site1.example.com

192.168.0.18

自動化ハブノード 3

automationhub-3.site1.example.com

192.168.0.19

自動化ハブデータベース

automationhub-db.site1.example.com

192.168.0.20

自動化ハブクラスター

automationhub-cluster.site1.example.com

192.168.0.21

2.3. ノードの検証チェックリスト

以下は、すべての要件の要約です。

  • ❏ コントローラーノードと実行ノード用に 16 GB の RAM
  • ❏ プライベート自動化ハブノード用に 8 GB の RAM
  • ❏ コントローラーノードと実行ノード用に 4 つの CPU
  • ❏ プライベート自動化ハブノード用に 2 つの CPU
  • ❏ データベースノード用に 20 GB 以上のディスク容量
  • ❏ データベースノード以外のノード用に 40 GB 以上のディスク容量
  • ❏ DHCP 予約では、無限リースを使用して、静的 IP アドレスを持つクラスターをデプロイメント。
  • ❏ すべてのノードの DNS レコード
  • ❏ すべてのノードで Red Hat Enterprise Linux 8.4 以降 64 ビット (x86) がインストール済み
  • ❏ すべてのノードに Chrony を設定済み
  • ❏ すべてのノードに ansible-core バージョン 2.11 以降がインストール済み

第3章 Ansible Automation Platform コントローラーの設定の詳細

このリファレンスアーキテクチャーは、Red Hat Enterprise Linux 8.4 x86_64 における自動化メッシュを使用した Ansible Automation Platform 2.1 のデプロイに焦点を当てています。この設定は、包括的な Ansible Automation Platform ソリューションを提供することを目的としています。このリファレンスアーキテクチャーでカバーされている主要なソリューションコンポーネントには、以下が含まれます。

  • Red Hat Enterprise Linux 8.4
  • Ansible Automation Platform 2.1
  • 自動化メッシュ
  • プライベート自動化ハブ

3.1. Network Configuration

3.1.1. Chrony 設定

クラスター内の各 Ansible Automation Platform ノードは NTP サーバーにアクセスできる必要があります。chronyd は、システムクロックを同期するためのデーモンです。クロックを NTP サーバーと同期できます。これにより、クラスターノードが検証を必要とする SSL 証明書を使用する場合、ノード間の日付と時刻が同期していなくても失敗しません。

すべてのノードで実行:

  1. インストールされていない場合は、次のように chrony をインストールします。

    # dnf install chrony --assumeyes
  2. vi などのテキストエディターで /etc/chrony.conf ファイルを編集します。

    # vi /etc/chrony.conf
  3. 次のパブリックサーバープールセクションを見つけ、適切なサーバーを含めるように変更します。必要なサーバーは 1 つだけですが、3 つを推奨します。サーバーと適切に同期するのにかかる時間を短縮するために、iburst オプションが追加されました。

    # Use public servers from the pool.ntp.org project.
    # Please consider joining the pool (http://www.pool.ntp.org/join.html).
    server <ntp-server-address> iburst
  4. /etc/chrony.conf ファイル内にすべての変更を保存します。
  5. ホストの起動時に chronyd デーモンが起動するように起動して有効にします。

    # systemctl --now enable chronyd.service
  6. chronyd デーモンのステータスを確認します。

    # systemctl status chronyd.service

3.2. OS 設定

3.2.1. Red Hat Subscription Manager

subscription-manager コマンドは、システムを Red Hat Network (RHN) に登録し、システムのサブスクリプションエンタイトルメントを管理します。--help オプションは、コマンドラインで使用可能なオプションをコマンドにクエリーするように指定します。--help オプションがコマンドディレクティブとともに発行された場合、特定のコマンドディレクティブで使用可能なオプションがリスト表示されます。

Red Hat Subscription Management を使用してシステムにパッケージを提供するには、最初にシステムをサービスに登録する必要があります。システムを登録するには、subscription-manager コマンドを使用して、register コマンドディレクティブを渡します。--username および --password オプションが指定されている場合、コマンドは RHN ネットワーク認証情報の入力を求めません。

以下に、subscription-manager を使用してシステムを登録する例を示します。

# subscription-manager register --username [User] --password '[Password]'
The system has been registered with id: abcd1234-ab12-ab12-ab12-481ba8187f60

システムを登録したら、エンタイトルメントプールに接続する必要があります。このリファレンス環境の目的上、Red Hat Ansible Automation Platform は選択されたプールになります。Red Hat Ansible Automation Platform エンタイトルメントプールを特定してサブスクライブします。次のコマンドディレクティブが必要です。

# subscription-manager list --available | grep -A8 "Red Hat Ansible Automation Platform"
---
Subscription Name:   Red Hat Ansible Automation Platform, Premium (5000 Managed Nodes)
Provides:            Red Hat Ansible Engine
                     Red Hat Single Sign-On
                     Red Hat Ansible Automation Platform
SKU:                 MCT3695
Contract:            <contract>
Pool ID:             <pool_id>
Provides Management: No
Available:           9990
Suggested:           1
Service Type:        L1-L3
Roles:
# subscription-manager attach --pool <pool_id>
Successfully attached a subscription for: Red Hat Ansible Automation Platform, Premium (5000 Managed Nodes)
# subscription-manager repos --enable=ansible-automation-platform-2.1-for-rhel-8-x86_64-rpms

3.2.2. ユーザーアカウント

Ansible Automation Platform 2.1 をインストールする前に、デプロイメントプロセスの sudo 権限を持つ非 root ユーザーを作成することを推奨します。このユーザーは以下で使用されます。

  • SSH 接続
  • インストール時中のパスワードレス認証

このリファレンス環境の目的上、ユーザー ansible が選択されていますが、任意のユーザー名を使用できます。

すべてのノードで、ansible という名前のユーザーを作成し、ssh キーを生成します。

  1. 非 root ユーザーを作成します。

    # useradd ansible
  2. ansible ユーザーのパスワードを設定します。

    # passwd ansible
  3. ansible ユーザーとして ssh キーを生成します。

    $ ssh-keygen -t rsa
  4. ansible ユーザーとして sudo を使用する場合は、パスワード要件を無効にします。

    # echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/ansible

3.2.3. SSH キーをすべてのノードにコピー

ansible ユーザーを作成したら、ansible ユーザーとして ssh キーをすべてのノードにコピーします。これにより、Ansible Automation Platform のインストールが実行されたときに、パスワードなしですべてのノードへの ssh が可能になります。

これは、次のように ssh-copy-id コマンドを使用して実行できます。

$ ssh-copy-id ansible@hostname.example.com
注記

クラウドプロバイダー内で実行している場合は、代わりに、すべてのノードに ansible ユーザーの公開鍵を含む ~/.ssh/authorized_keys ファイルを作成し、読み取りおよび書き込み権限 (権限 644) を持つ所有者 (ansible) のみに authorized_keys ファイルへのアクセス権限を設定する必要があります。

3.2.4. ファイアウォールの設定

ファイアウォールへのアクセスと制限は、Ansible Automation Platform 2.1 環境を保護する上で重要なロールを果たします。Red Hat Enterprise Linux 8.4 を使用すると、デフォルトで動的ファイアウォールデーモンである firewalld が使用されます。firewalld は、ネットワークゾーンを割り当てて、ネットワークとそれに関連する接続およびインターフェイスに信頼レベルを割り当てることによって機能します。

Ansible Automation Platform 2.1 のインストールを成功させるために、適切なサービスとポートへのアクセスを許可するようにファイアウォール設定を設定することを推奨します。

すべてのノードで、firewalld がインストール、起動、および有効化されていることを確認します。

  1. firewalld パッケージをインストールします。

    # dnf install firewalld --assumeyes
  2. firewalld サービスを開始します。

    # systemctl start firewalld
  3. Firewalld サービスを有効にします。

    # systemctl enable firewalld

第4章 Ansible Automation Platform コントローラーデータベースの設定の詳細

4.1. コントローラーデータベースのファイアウォールの設定

Ansible Automation Platform のインストールを成功させるための前提条件の 1 つは、データベースノードでデータベースポートを有効にすることです。使用されるポートは、インベントリーファイル内の pg_port によって設定されます。

インベントリーファイルのスニペット

pg_port='5432'

データベースノード内で、ansible ユーザーとして、インストールに使用する firewalld ポートを設定します。

  1. firewalld が実行されていることを確認します。

    $ sudo systemctl status firewalld
  2. コントローラーデータベースノードに firewalld ポートを追加します (例: ポート 5432)。

    $ sudo firewall-cmd --permanent --zone=public --add-port=5432/tcp
  3. firewalld をリロードします。

    $ sudo firewall-cmd --reload
  4. ポートが開いていることを確認します。

    $ sudo firewall-cmd --list-ports

第5章 Ansible Automation Platform の実行とホップノード設定の詳細

5.1. 実行ノードとホップノードのファイアウォール設定

Ansible Automation Platform のインストールを成功させるための前提条件の 1 つは、メッシュノード (実行ノードおよびホップノード) で自動化メッシュポートを有効にすることです。すべてのノードのメッシュネットワークに使用されるデフォルトポートは 27199/tcp に設定されていますが、インベントリーファイル 内の各ノードの変数として receptor_listener_port を指定することで、別のポートを使用するように設定できます。

インベントリーファイルのスニペット

receptor_listener_port=27199

注記

このリファレンス環境では、すべての Ansible Automation Platform 2 コントローラーノードはノードタイプ control として指定されます。コントロールノードが hybrid ノード (デフォルトのノードタイプ) として指定されている場合、メッシュポート (デフォルト: 27199/tcp) を有効にする必要があります。

ホップおよび実行ノード内で、ansible ユーザーとして以下を実行します。

  1. firewalld が実行されていることを確認します。

    $ sudo systemctl status firewalld
  2. ホップおよび実行ノードに firewalld ポートを追加します (ポート 27199 など)。

    $ sudo firewall-cmd --permanent --zone=public --add-port=27199/tcp
  3. firewalld をリロードします。

    $ sudo firewall-cmd --reload
  4. ポートが開いていることを確認します。

    $ sudo firewall-cmd --list-ports

第6章 Ansible Automation Platform 2.1 のインストール

Ansible Automation Platform 2.1 のインストールでは、自動化コントローラーと自動化メッシュを使用して、自動化ワークロードを処理するためのシンプルで安全かつ柔軟な方法を提供します。

自動化コントローラーは、UI、Restful API、RBAC ワークフロー、および CI/CD インテグレーションを通じて自動化のためのコントロールプレーンを提供します。

自動化メッシュは、既存ネットワークを使用して互いにピアツーピア接続を確立しているノードを介して、大規模な分散ワーカーのコレクション全体で作業分散を容易にできるオーバーレイネットワークです。

自動化メッシュを配置すると、以下が可能になります。

  • ダウンタイムなしでクラスター容量を動的に拡張する。
  • 実行プレーンとコントロールプレーンを切り離す。
  • 停止が自動的に存在する可能性がある場合は、実行を別のパスに再ルーティングする。

以下は、自動化メッシュを使用してクラスター化された Ansible Automation Platform 2.1 をデプロイする手順です。

注記

次のインストールは、このリファレンス環境において Ansible Automation Platform クラスターの Ansible サイト 1 で実行されます。完了後、 Ansible サイト 2 でも同じ手順を実行してください。

controlplane-1.site1.example.com で、ansible ユーザーとして以下を実行します。

  1. Ansible Automation Platform 2.1Setup tar (する ansible-automation-platform-setup-2.1.0-1.tar.gz) をダウンロードします。
  2. ansible-automation-platform-setup-2.1.0-1.tar.gz をデプロイメントします。

    $ tar zxvf ansible-automation-platform-setup-2.1.0-1.tar.gz
  3. ディレクトリーを ansible-automation-platform-setup-2.1.0-1.tar.gz に変更します。

    cd ansible-automation-platform-setup-2.1.0-1/
  4. 既存のインベントリーファイルをバックアップします。

    $ cp inventory inventory.bkup
  5. ansible-core パッケージをインストールします。

    $ sudo dnf install ansible-core --assumeyes
  6. インベントリーを変更して、環境に関する適切な情報を含めます。以下は、このリファレンス環境の例です。

    [automationcontroller]
    controlplane-1.site1.example.com ansible_connection=local
    controlplane-2.site1.example.com
    controlplane-3.site1.example.com
    
    [automationcontroller:vars]
    node_type=control 1
    peers=execution_nodes 2
    
    [execution_nodes]
    executionnode-1.site1.example.com peers=executionnode-2.site1.example.com 3
    executionnode-2.site1.example.com
    
    [database]
    controldatabase.site1.example.com 4
    
    [all:vars]
    #Handled by Ansible Vault
    admin_password='' 5
    
    pg_host='controldatabase.site1.example.com' 6
    pg_port='5432' 7
    
    pg_database='awx'
    pg_username='awx'
    
    #Handled by Ansible Vault
    pg_password='' 8
    
    pg_sslmode='prefer'
    
    registry_url=’registry.redhat.io’ 9
    registry_username='myusername' 10
    
    #Handled by Ansible Vault
    registry_password='' 11
    1
    コントロールノードは、プロジェクトおよびインベントリーの更新およびシステムジョブを実行しますが、実行ジョブは実行しません。これらのノードでは実行機能は無効になります。
    2
    ピアの関係はノード間の接続を定義します。コントロールプレーンノードと実行ノード間のピア関係を設定します。
    3
    実行ノード間のピア関係を設定します。
    4
    コントローラーをインストールするために PostgreSQL データベースをインストールするノードを設定します。
    5
    インストール完了時に管理者ユーザーが UI にアクセスするためのパスワードを設定します。
    6
    PostgreSQL ホスト (データベースノード) を設定します。
    7
    データベースノードに使用する PostgreSQL ポートを設定します。
    8
    PostgreSQL データベースのパスワードを設定します。
    9
    実行環境イメージがダウンロードされ、インストールに含まれます。イメージをダウンロードするには適切な認証情報が必要です。
    10
    registry_url にアクセスするためのユーザー認証情報。
    11
    registry_url にアクセスするためのパスワード認証情報。
  7. 暗号化された認証情報を保存する credentials.yml というラベルのファイルを作成します。

    $ cat credentials.yml
    admin_password: my_long_admin_pw
    pg_password: my_long_pg_pw
    registry_password: my_long_registry_pw
  8. ansible-vault を使用して credentials.yml ファイルを暗号化します。

    $ ansible-vault encrypt credentials.yml
    New Vault password:
    Confirm New Vault password:
    Encryption successful
    警告

    暗号化された vault パスワードを安全な場所に保管します。

  9. credentials.yml ファイルが暗号化されていることを確認します。

    $ cat credentials.yml
    $ANSIBLE_VAULT;1.1;AES256
    36383639653562386534316333333961383336306465336465613831353435313530376464616539
    3765393063303065323466663330646232363065316666310a373062303133376339633831303033
    34313534383962613632303761636632623932653062343839613639653635643365616233313365
    3636616639313864300a353239373433313339613465326339313035633565353464356538653631
    63346434383534643237663862353361366632613634333231316334363939396461326561643336
    3430633534303935646264633034383966336232303365383763
  10. Ansible Automation Platform 2.1 をインストールするために setup.sh を実行し、credentials.yml および --ask-vault-pass オプションを渡します。

    $ ANSIBLE_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ANSIBLE_HOST_KEY_CHECKING=False ./setup.sh -e @credentials.yml -- --ask-vault-pass
    注記

    インストールを成功させるために、次の ANSIBLE*_ 変数が設定されています。

    注記

    インベントリーファイルに設定できるさまざまな値の詳細は、インベントリーファイルの設定 を参照してください。

  11. Ansible Automation Platform ダッシュボード (例: controlplane-cluster.site1.example.com) にログインします。
  12. サブスクリプションマニフェストまたはユーザー名/パスワードを使用して、Ansible Automation Platform サブスクリプションをアクティブ化します。

    import manifest
    注記

    サブスクリプションマニフェストを生成する手順については、付録D サブスクリプションマニフェストの生成 を参照してください。

第7章 プライベート自動化ハブ

自動化ハブは、認定されたコレクションの中心的な場所です。信頼、テスト、およびサポートされているコンテンツの主なソースとして機能します。プライベート自動化ハブは、自動化開発者が独自の自動化コンテンツで協力し、それを公開し、組織内での Ansible コードの配信を合理化する機能を提供します。

Ansible Automation Platform 2.1 のプライベート自動化ハブは、主に自動化実行環境のサポートを提供します。実行環境は、自動化が実行される環境を定義、構築、および配布するための標準化された方法です。一言で言えば、自動化実行環境は、プラットフォーム管理者による Ansible の管理を容易にするコンテナーイメージです。

7.1. 高可用性自動化ハブの要件

7.1.1. ファイアウォールサービスの有効化

高可用性自動化ハブ環境の一部として、共有ファイルシステムを使用する必要があります。そのため、次のセクションに示すとおり、ファイルシステムを正常にマウントするには、以下のファイアウォールサービスを有効にする必要があります。

自動化ハブノードで、ansible ユーザーとして以下を行います。

  1. 次の firewalld サービス (nfsmountdrpc-bind) が有効になっていることを確認します。

    $ sudo firewall-cmd --zone=public --add-service=nfs
    $ sudo firewall-cmd --zone=public --add-service=mountd
    $ sudo firewall-cmd --zone=public --add-service=rpc-bind
  2. 変更を有効にするには、firewalld をリロードします。

    $ sudo firewall-cmd --reload
  3. firewalld サービスが有効になっていることを確認します。

    $ sudo firewall-cmd --get-services

7.1.2. 共有ファイルシステム

高可用性自動化ハブでは、お使いの環境に、共有ファイルシステムを設定しておく必要があります。

Ansible Automation Platform インストーラーを実行する前に、共有ファイルシステムをインストールすると作成される /var/lib/pulp ディレクトリーが全クラスターに存在することを確認します。Ansible Automation Platform インストーラーは、/var/lib/pulp がノードのいずれかで検出されない場合にエラーを返し、高可用性自動化ハブの設定が失敗します。

自動化ハブノードで、ansible ユーザーとして以下を行います。

  1. /var/lib/pulp ディレクトリーを作成します。

    $ sudo mkdir /var/lib/pulp
  2. 共有ファイルシステムをマウントします (このリファレンス環境では NFS 共有を使用します)。

    $ sudo mount -t nfs4 <nfs_share_ip_address>:/ /var/lib/pulp
  3. 共有ファイルシステムが正常にマウントされていることを確認します。

    $ df -h

第8章 プライベート自動化ハブのインストール

すべての前提条件が設定されたら、最後の手順としては、クラスター化された自動化ハブのインストール用にインベントリーファイルを変更し、setup.sh を実行します。

このリファレンス環境内では、すべてのノードにアクセスできる controlplane-1.site1.example.com システムを使用して、クラスター化された自動化ハブ環境の setup.sh を実行します。

注記

次のインストールは、このリファレンス環境において Ansible Automation Platform クラスターの Ansible サイト 1 で実行されます。完了後、 Ansible サイト 2 でも同じ手順を実行してください。

controlplane-1.site1.example.com で、ansible ユーザーとして以下を実行します。

  1. ディレクトリーを ansible-automation-platform-setup-2.1.0-1.tar.gz に変更します。

    cd ansible-automation-platform-setup-2.1.0-1/
  2. 既存のインベントリーファイルをバックアップします。

    $ cp inventory inventory-controller.bkup
  3. インベントリーファイルを変更して、環境に関する適切な情報を含めます。以下は、このリファレンス環境の例です。

    [automationcontroller]
    
    [automationcontroller:vars]
    
    [execution_nodes]
    
    [automationhub]
    ahub-1.site1.example.com 1
    ahub-2.site1.example.com
    ahub-3.site1.example.com
    
    
    [database]
    ahub-db.site1.example.com 2
    
    [servicescatalog_workers]
    
    [sso]
    
    [all:vars]
    admin_password=''
    
    pg_host=''
    pg_port=''
    
    pg_database=''
    pg_username=''
    pg_password=''
    pg_sslmode=''  # set to 'verify-full' for client-side enforced SSL
    
    registry_url= 'registry.redhat.io' 3
    registry_username='myusername' 4
    
    
    #Handled by Ansible vault
    registry_password='' 5
    
    receptor_listener_port=27199
    
    #Handled by Ansible vault
    automationhub_admin_password='' 6
    
    automationhub_pg_host='ahub-db.site1.example.com' 7
    automationhub_pg_port='5432' 8
    
    automationhub_pg_database='automationhub'
    automationhub_pg_username='automationhub'
    
    #Handled by Ansible vault
    automationhub_pg_password='' 9
    
    automationhub_pg_sslmode='prefer'
    
    sso_console_admin_password=''
    1
    自動化ハブノード。
    2
    自動化ハブのインストール用に PostgreSQL データベースをインストールするノードを設定します。
    3
    実行環境イメージがダウンロードされ、インストールに含まれます。イメージをダウンロードするには適切な認証情報が必要です。
    4
    registry_url にアクセスするためのユーザー認証情報。
    5
    registry_url にアクセスするためのパスワード認証情報。
    6
    インストール完了時に管理者ユーザーが UI にアクセスするためのパスワードを設定します。
    7
    PostgreSQL ホスト (データベースノード) を設定します。
    8
    自動化ハブデータベースノードに使用する PostgreSQL ポートを設定します。
    9
    PostgreSQL データベースのパスワードを設定します。
    注記

    Ansible Automation Platform コントローラーのインストールに関するすべての情報が削除されました。

  4. 暗号化された認証情報を保存する credentials_ah.yml というラベルのファイルを作成します。

    $ cat credentials_ah.yml
    automationhub_admin_password: my_long_ahub_pw
    automationhub_pg_password: my_long_ahub_pw
    registry_password: my_long_registry_pw
  5. ansible-vault を使用して credentials_ah.yml ファイルを暗号化します。

    $ ansible-vault encrypt credentials_ah.yml
    New Vault password:
    Confirm New Vault password:
    Encryption successful
    警告

    暗号化された vault パスワードを安全な場所に保管します。

  6. credentials_ah.yml ファイルが暗号化されていることを確認します。

    $ cat credentials_ah.yml
    $ANSIBLE_VAULT;1.1;AES256
    36383639653562386534316333333961383336306465336465613831353435313530376464616539
    3765393063303065323466663330646232363065316666310a373062303133376339633831303033
    34313534383962613632303761636632623932653062343839613639653635643365616233313365
    3636616639313864300a353239373433313339613465326339313035633565353464356538653631
    63346434383534643237663862353361366632613634333231316334363939396461326561643336
    3430633534303935646264633034383966336232303365383763
  7. Ansible Automation Platform 2.1 をインストールするために setup.sh を実行し、credentials_ah.yml および --ask-vault-pass オプションを渡します。

    $ ANSIBLE_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ANSIBLE_HOST_KEY_CHECKING=False ./setup.sh -e @credentials_ah.yml -- --ask-vault-pass
    注記

    インストールを成功させるために、次の ANSIBLE*_ 変数が設定されています。

    注記

    インベントリーファイルに設定できるさまざまな値の詳細は、インベントリーファイルの設定 を参照してください。

  8. プライベート自動化ハブダッシュボードにログインします (例: automationhub-cluster.site1.example.com)。

第9章 集中ロギング

ロギングについて考えるとき、ほとんどの人の頭にまず浮かぶのは、特定の問題をトラブルシューティングする能力です。テクノロジーが進化し続け、多くのアプリケーションが膨大な量のデータをキャプチャーするに伴い、ログはデータをキャプチャーするだけでなく、運用インテリジェンスメソッドの適用を可能にする上で重要なロールを果たします。

Ansible Automation Platform は、詳細なログを数種類のサードパーティー製外部ログ集約サービスに送信できるロギング機能を提供します。このデータフィードに接続されたサービスは、自動化コントローラーの使用や技術の傾向に関する洞察を得るための有用な手段として機能します。このデータを使用して、インフラストラクチャー内のイベントを分析し、異常をモニタリングし、あるサービスのイベントを別のサービスのイベントと関連付けることができます。

自動化コントローラーに最も役立つデータのタイプは、ジョブファクトデータ、ジョブイベント/ジョブ実行、アクティビティーストリームデータ、およびログメッセージです。データは、カスタムハンドラーで、またはインポートされたライブラリーを介して設計された最小限のサービス固有の調整を使用して、HTTP 接続を介して JSON 形式で送信されます。

現在、Ansible Automation Platform のログ機能は、Splunk、Logstash、Loggly、Sumologic と簡単に連携できるように設定されており、別のサードパーティーの外部ログ集約サービスを使用する場合は他の オプションを提供します。

このリファレンス環境の目的上、Splunk Enterprise 8.2.2 を使用して、両方の Ansible Automation Platform サイトに集中ログを設定することに重点を置いています。

注記

Splunk Enterprise のインストールは、このリファレンスアーキテクチャーの範囲外です。詳細は、How to install Splunk Enterprise を参照してください。

9.1. Splunk HTTP イベントコレクター (HEC) の設定

HTTP イベントコレクターは、開発者がトークンベースの認証モデルを使用して、HTTP または HTTPS を介してアプリケーションイベントを Splunk プラットフォームに直接送信できるようにするエンドポイントです。

HEC を使用するための最初の手順は、Splunk デプロイメント内で HEC を有効にすることです。

Splunk 管理者として、以下を実行します。

  1. Splunk ダッシュボードにログインします。
  2. SettingsData InputsHTTP Event Collector をクリックします。
  3. 右上隅にある Global Settings をクリックします。
  4. All Tokens トグルオプションで Enabled (デフォルト) を選択します。
  5. すべての HEC トークンの Default Source Type を選択します (例: _json)
  6. Splunk デプロイメントで HTTPS を使用している場合は、Enable SSL をにチェックマークを付けます。
  7. HTTP Port Number を介して HTTP 入力専用のポートを設定します。デフォルトは 8088 です。
  8. Save をクリックします。

図9.1 グローバル設定

global settings
警告

Splunk デプロイメントでポート 8088 (または割り当てられたポート) が開いていることを確認します。

Splunk デプロイメントで HEC を有効にして、Splunk での自動化コントローラー認証に使用される HEC トークンを生成します。

HTTP 経由でデータを受信するためにトークンを設定する方法は多くありますが、このリファレンス環境では以下の設定が使用されます。

注記

HEC の詳細は、HTTP Event Collector を参照してください。

  1. SettingsAdd Data をクリックします。
  2. ページ下部で Monitor を選択します。
  3. HTTP Event Collector をクリックします。
  4. Name フィールドにトークン名を入力します (例: AAP)。
  5. Source TypeSelect に変更し、ドロップダウンに _json と入力します。
  6. Index 内で、ansible というラベルの付いたインデックスを作成します。
  7. 新しく作成したインデックスを選択したアイテムボックスに追加します。

    input settings
  8. 右上隅にある Review をクリックします。

    review
  9. Submit をクリックします。
  10. 作成されたトークン値は、Ansible Automation Platform で Splunk の認証に使用されるため保存します。

    created token
  11. 緑色の Start Search ボタンをクリックし、提供されたサンプルクエリーをコピーして後で使用できるようにします。

    source="http:AAP" (index="ansible") sourcetype="_json"

9.2. Ansible Automation Platform 自動化コントローラーの設定

HEC を有効にして HEC トークンを作成すると、Splunk 環境は Ansible Automation Platform からイベントを受信する準備が整います。

最後の手順として、以下に示すとおり、集中ログに Splunk 環境を使用するために Ansible Automation Platform 化コントローラークラスターを設定します。

Ansible Automation Platform 環境で、以下を行います。

  1. admin ユーザーとして Ansible Automation Platform ダッシュボードにログインします。
  2. ページの一番下までスクロールして、Settings をクリックします。
  3. System で、Logging settings を選択します。

    settings
  4. Logging Aggregator 内で、ログの送信先となる場所を入力します。

    1. この Splunk 環境では https://splunk.example.com:8088/services/collector/event を使用します。

      注記

      デフォルトの 8088 を使用していない場合は、ロケーションプロトコル (HTTP/HTTPS) とポートを変更します。

  5. Logging Aggregator Type 内で、ドロップダウンから splunk を選択します。
  6. Logging Aggregator Password/Token 内で、以前に作成した HEC トークンをコピーして貼り付けます。
  7. Logging Aggregator Protocol 内で、ドロップダウンから HTTPS/HTTP を選択します。
  8. Logging Aggregator Level Threshold 内で、環境に適したログのレベルを選択します (例: INFO)。

図9.2 リファレンス環境のログ設定

logging details
注記

上記の設定には、Splunk でロギングを実現するための最小値が含まれています。環境に最適になるようにログ設定を調整してください。

完了したら、サイト 2 でログ機能の設定を繰り返します。そうすることで、両方のサイトで確実に同じ集中型ロギング環境が使用されます。

9.3. Splunk に送信されたイベントの検証

最後に、Ansible Automation Platform イベントが Splunk に適切に送信されていることを確認します。これは、Ansible Automation Platform フヂ y じ化コントローラーを介したアドホックコマンドを実行して確認します。

Ansible Automation Platform ダッシュボード内で、以下を行います。

  1. ResourcesInventories で、Demo Inventory を選択します。
  2. DetailsHosts を選択します。
  3. Run Command ボタンをクリックします。
  4. Run command Details ウィンドウセクションで、ドロップダウンからモジュール ping を選択して Next をクリックします。
  5. Run command Execution Environment セクション内で、Default execution environment を選択して Next をクリックします。
  6. Run command Credential セクション内で、Demo Credential を選択して Next をクリックします。
  7. Run command Preview セクション内で、青い Launch ボタンをクリックします。

出力は次のようになります。

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Splunk ダッシュボードに移動し、検索内で Ansible Automation Platform イベントが Splunk 内でトリガーされたか確認します。

splunk search

検索では、次のような 1 つのイベントが表示されます。

output search

Ansible Automation Platform のサイト設定ごとに、同じ検証プロセスを繰り返します。

第10章 複数の Ansible Automation Platform デプロイメントにおける設定の一貫性

10.1. Configuration as Code を使用する理由

これまで、複数の Ansible Automation Platform デプロイメントサイトで一貫性を維持する場合、データベースレプリケーションを使用して 1 つの Ansible Automation Platform 環境からデータをコピーし、そのデータを別の Ansible Automation Platform サイトにインポートする方法を考慮してきました。

これは、スクリプト、専用ソフトウェア、データベースの手動エクスポートを実行してから Ansible Automation Platform データベースを新しいサイトにインポートするか、同様のことを行うカスタム Ansible Playbook を実行することで達成できました。

多くの異なる方法がありますが、通常、これらの方法には不利な点があります。

たとえば、データベースレプリケーションにはストレージインフラストラクチャーへの投資が必要であり、適切な専門知識がなければ並行処理は難しい場合があります。

10.2. Configuration as Code とは

Configuration as Code は、リポジトリー内の設定ファイルを管理する方法として定義されています。Ansible Automation Platform の場合、これらの設定ファイルは、Ansible Automation Platform 環境全体に適用する設定を確立します。

Ansible Automation Platform 設定ファイルをコードとして保存および管理することで、以下が可能になります。

  • すべての Ansible Automation Platform 環境に適用される設定を標準化する
  • 設定のバージョン管理の利点を継承する
  • 追加の Ansible Automation Platform デプロイメントを簡単にスケーリングして同じ設定を使用する
  • 設設定の変更を簡単に追跡して、問題の修正を容易にする

Configuration as Code には、Ansible Automation Platform 環境全体に適用できる多くの利点とベストプラクティスがありますが、複数の Ansible Automation Platform サイトへの設定の配信をすぐに、一貫性を持って合理化および自動化するには、Configuration as Code ソリューションと Git Webhook をペアリングする必要があります。

10.3. Git Webhook とは

Git Webhook は、リポジトリーまたは組織で特定のアクションが発生するたびに通知を外部 Web サーバーに配信する方法として定義されています。

たとえば、リポジトリーが更新されると、CI ビルドをトリガーしたり、環境をデプロイしたり、この場合は設定を Ansible Automation Platform 環境に更新したりするイベントがトリガーされる可能性があります。

Configuration as Code および Git Webhook のソリューションを使用すると、すべてのプラットフォームの正確な設定と同時に、すべての Ansible Automation Platform サイトを即座に更新する Ansible Automation Platform ワークフローを設定できます。

事実上、データベースのバックアップを維持したり、高価なデータベースレプリケーションソリューションを有効にしたりするオーバーヘッドを排除しながら、これらのソリューションの長所を実現します。

この方法を念頭に置いて、次のセクションでは、管理者が Git Webhook を使用して複数の Ansible Automation Platform 環境間で一貫性を確保するために、Configuration as Code を利用する方法に焦点を当てます。

10.4. Webhook の使用

Webhook は、Web 上のアプリ間で指定されたコマンドを実行する機能を提供します。Ansible 自動化コントローラーは現在、GitHub および GitLab との Webhook インテグレーションを提供しています。このリファレンス環境では、GitHub を使用して自動化コントローラーで Webhook を設定する手順について説明します。

10.4.1. GitHub Webhook の設定

自動化コントローラーには、トリガーされた Webhook イベントに基づいてジョブを実行する機能があります。以下に、その設定手順を示しています。

GitHub パーソナルアクセストークンの作成

  1. 自動化コントローラーで使用するパーソナルアクセストークン (PAT) を生成します。

    1. GitHub アカウントのプロファイル設定で、Settings をクリックします。
    2. Personal 設定の下の Developer Settings をクリックします。

      webhooks create webhook github settings
    3. Developer 設定で Personal access tokens をクリックします。
    4. Personal アクセストークンの画面から、Generate new token ボタンをクリックします。
    5. プロンプトが表示されたら、GitHub アカウントのパスワードを入力して続行します。
    6. Note フィールドに、この PAT の用途に関する簡単な説明を入力します。
    7. Expiration ドロップダウンで、No expiration を選択します。
    8. Scope フィールドでは、自動化コントローラー Webhook はリポジトリースコープへのアクセスのみ (ただし招待を除く) 必要とします。その他のスコープについては、表のすぐ上にあるリンクをクリックしてドキュメントにアクセスしてください。

      scopes
    9. ページの下部にある Generate Token ボタンをクリックします。

      警告

      トークンが生成されたら、必ず PAT をコピーしてください。後の手順で Ansible Automation Platform 自動化コントローラークラスターが使用します。GitHub でこのトークンに再度アクセスすることはできなくなります。

GitHub リポジトリーの作成

PAT を配置したら、次の手順として、リポジトリーが変更されると GitHub Webhook によってトリガーされる Git リポジトリーを作成します。

自動化コントローラーの設定を簡単に更新または変更できるようにすることに重点が置かれているため、このリファレンス環境では redhat_cop.controller_configuration という名前の Ansible コレクションを利用します。

この Ansible コレクションを使用すると、コントローラーコレクションモジュールを使用し、Ansible ロールを介して Ansible コントローラーサーバーと簡単に対話できます。

このコレクションを使用することで、これらの既存のロールを使用して、すべてのサイトで自動化コントローラー環境を変更または更新できます。

注記

redhat_cop.controller_configuration コレクションはコミュニティープロジェクトであり、Red Hat では正式にサポートされていません。

  1. GitHub で、new repository を作成します。

    1. 適切な 所有者を選択し、リポジトリー名を指定します。

      1. このリファレンス環境では、リポジトリー名として aap_refarch を使用します。
    2. リポジトリーを説明するためのオプションの説明を提供します。
    3. リポジトリーをパブリックまたはプライベートに設定します。

      1. このリファレンス環境では、リポジトリーをパブリックに設定します。
    4. Add a README file を使用してリポジトリーを初期化します。
  2. create repository ボタンをクリックします。

新しく作成された GitHub リポジトリー内に、3 つのファイルが作成されます。

  • playbook.yml - 自動化コントローラーを更新または変更するためのすべての適切なロールを備えた Playbook。
  • requirements.yml - Playbook の実行に必要なすべてのコレクションを備えた requirements.yml
  • group_vars/all.yml - 特定の設定 (ロール) 用に変更するすべての変数を含む all.yml ファイル。

これらの 3 つのファイルの目的は、group_vars/all.yml が変更されてリポジトリーに更新されたときに、Ansible Automation Platform 自動化コントローラークラスター内のジョブテンプレートを開始して、適切な変更または更新を行うメソッドを提供することです。

注記

これらの 3 つのファイルのサンプルは、このガイドの 付録C 補足 セクションか、https://github.com/ansible/aap_refarch にあります。

Ansible Automation Platform 自動化コントローラークラスター内におけるリソース認証情報の設定

リポジトリーを Configuration as Code として使用する前に、Ansible Automation Platform サイト内に適切な認証情報リソースを設定します。

これにより、新しいプロジェクト、ワークフロー、およびジョブテンプレートが作成されたときに、それらのリソースに認証情報をかんたんに割り当てることができるようになります。

次の手順は、2 つの必須認証情報を作成する方法を示しています。

1 つは以前に作成した GitHub (PAT) トークンに関連付けられた認証情報です。

もう 1 つは、更新される Ansible Automation Platform サイトに関連付けらている認証情報です。各 Ansible Automation Platform サイトは、独自の環境によって更新されます。たとえば、サイト 1 はサイト 1 によって更新されます。

それぞれの Ansible Automation Platform サイトで、以下を実行します。

  1. Ansible Automation Platform 自動化コントローラーダッシュボードにログインします。
  2. ResourcesCredentials で、青色の Add ボタンをクリックします。

    1. Name を入力します (例: GitHub PAT)。
    2. Credential Type として GitHub Personal Access Token を選択します。
    3. Type Details で、以前に GitHub から生成されたトークンを使用してシークレットを追加します。
  3. Save をクリックします。

    注記

    GitHub にポストバックするジョブテンプレートで使用するので、この認証情報の名前をメモしてください。

GitHub PAT ク認証情報セットを使用して、既存の Ansible Automation Platform 環境の用に 2 つめの認証情報を作成します。

  1. ResourcesCredentials で、青色の Add ボタンをクリックします。

    1. Name を入力します (例: AAP_Site1)。
    2. Credential Type として Red Hat Ansible Automation Platform を入力します。
    3. Type Details 内に、適切な詳細を追加します。

      1. Red Hat Ansible Automation Platform (例: controlplane-cluster.site1.example.com)
      2. Username (例: admin)
      3. Password (例: redhat)
    4. SSL 証明書が署名されている場合は、Options 内の Verify SSL を選択します。
  2. Save をクリックします。

Ansible Automation Platform サイト 2 でこのセクションを繰り返します。

注記

このリファレンス環境はロードバランサーを利用するため、controlplane-cluster.site1.example.com が使用されます。ロードバランサーの設定は、このリファレンス環境の範囲外です。

Configuration as Code プロジェクトの作成

Configuration as Code プロジェクトの目的は、Configuration as Code リポジトリーが更新されるたびに自動的に実行されるジョブテンプレートを含むワークフローを作成することです。

これにより、変数の設定などの変更を行うときに、Git リポジトリー Playbook が多数の自動化コントローラー設定に対して適切なロールを実行することが保証されます。

このセクションでは、上記を実現するためのプロジェクト、ワークフロー、およびジョブテンプレートを作成します。

Ansible Automation Platform サイト 1 のダッシュボード内で以下を行います。

  1. ResourcesProjects で、青色の Add ボタンをクリックします。
  2. Name を指定します (例: Configuration as Code Project)。
  3. Organization として Default を選択します。
  4. Execution Environment として Default execution environment を選択します
  5. Source Control Credential Type として Select Git を選択します。
  6. Type Details で、以下を実行します。

    1. Source Control URL (GitHub リポジトリー) を追加します。
  7. Options 内で、以下を実行します。

    1. CleanDeleteUpdate Revision on Launch を選択します。
  8. Save をクリックします。

次に、ワークフローテンプレートを作成します。

  1. ResourcesTemplates で、青色の AddAdd workflow template をクリックします。
  2. Name を指定します (例: Configuration as Code Workflow)。
  3. Options で、 Enable Webhook のチェックをオンにします。

    1. Webhook details 内で、Webhook Service として GitHub を選択します。
    2. Webhook details 内で、以前に作成した GitHub PAT トークンを Webhook Credential として選択します (例: GitHub PAT)。
  4. Save をクリックします。
  5. Please click the Start button to begin ウィンドウ内で、右上隅の Save をクリックします。
  6. 後で使用するため、Webhook URLWebhook Key をコピーします。

Ansible Automation Platform サイト 2 で上記のプロセスを繰り返します。

リポジトリー用 GitHub Webhook の有効化

Ansible Automation Platform ワークフローテンプレートを作成し、必要なファイルを格納した GitHub リポジトリーを配置したら、次の手順としてリポジトリー用の Webhook (例: aap_refarch) を有効にします。

  1. GitHub リポジトリーのホームページで、Settings タブを選択します。
  2. Settings タブで Webhooks を選択します。

    webhooks option
  3. Webhooks セクションで、Add webhook ボタンを選択します。
  4. Payload URL (ワークフローの Webhook URL) を入力します。
  5. Content type ドロップダウンを application/json に変更します。
  6. Secret (ワークフローの Webhook キー) を入力します。
  7. プッシュイベントを使用するようにデフォルトのままにして、Add webhook ボタンをクリックします。

    警告

    デフォルトでは、GitHub はペイロードを配信するときに SSL 証明書を検証します。自動化コントローラーの SSL 証明書が署名されていない場合は、必ず SSL verfication無効にしてください。

Ansible Automation Platform サイト 2 で上記のプロセスを繰り返します。

Configuration as Code ジョブテンプレートの作成

Configuration as Code プロジェクト用に作成されるジョブテンプレートは、Git リポジトリーが更新されるたびに playbook.yml ファイルを自動的に実行します。

これにより、設定の変更が必要になったときに、Ansible Automation Platform コントローラー API を使用して適切に変更することができます。すべての Ansible Automation Platform サイトで同じ方法を組み合わせると、設定されたサイト全体ですべての変更がグローバルになります。

  1. ResourcesTemplates で、青色の AddAdd job template をクリックします。
  2. Name を指定します (例: Configuration as Code Job)。
  3. Job Type として Run を選択します。
  4. Inventory として Demo Inventory を選択します。
  5. Project として Configuration as Code Project を選択します。
  6. Execution Environment として Default execution environment を選択します
  7. Playbook として playbook.yml を選択します。
  8. Credentials を選択し、カテゴリーを Machine から Red Hat Ansible Automation Platform に切り替えます。
  9. Ansible Automation Platform サイトの適切な認証情報 (例: AAP_Site1) を選択します。
  10. Options で、 Enable webhook を選択します。
  11. Webhook Service として GitHub を選択します。
  12. 以前に作成した GitHub PAT トークンを Webhook Credential として選択します (例: GitHub PAT)。
  13. Save をクリックします。

Ansible Automation Platform サイト 2 で上記のプロセスを繰り返します。

作成した Configuration as Code ワークフローの更新

以前は、Configuration as Code ワークフローが作成されていました。このワークフローの目的は、Configuration as Code プロジェクトが常に同期され、リポジトリーに変更が加えられるたびに Configuration as Code ジョブが Configuration as Code Playbook を実行するように保証することです。

  1. ResourcesTemplates で、テンプレートを選択します (例: Configuration as Code Workflow)。
  2. Details セクションで、 Visualizer タブを選択し、緑色の Start をクリックします。
  3. Node TypeProject Sync を選択し、適切なプロジェクト (例: Configuration as Code Project) を選択して Save をクリックします。
  4. Configuration as Code Project にカーソルを合わせ、プラス (+) 記号を選択します。
  5. Add Node ウィンドウで、このノードを実行するタイミングとして Always を選択し、Next をクリックします。
  6. Node Type として Configuration as Code Job を選択し、Save をクリックします。
  7. Visualizer に戻ったら、右上隅にある Save ボタンを選択します。

Configuration as Code 設定の検証

多くのロールがすでに redhat_cop.controller_configuration に含まれているため、group_vars/all.yml ファイルを適切な yaml で更新してユーザーを作成すると、すべてが期待どおりに機能しているかかんたんに検証できます。

ユーザーを作成する場合は、ユーザーロールのドキュメント で、使い捨ての変数をすべて詳しく確認します。

詳細を確認し、John という名前の非管理者ユーザーを作成すると次のようになります。

group_vars/all.yml

---
controller_user_accounts:
  - user: "john"
    is_superuser: false
    password: "redhat"

上記の操作で group_vars/all.yml ファイルが更新され、Git リポジトリーにプッシュされると、Ansible Automation Platform 自動化コントローラー内のジョブが開始されます。

これは、自動化コントローラーダッシュボードの Views セクションで Jobs を選択すると確認できます。参照するジョブには、ジョブ番号の後にジョブ名を付ける必要があります。この参照環境では、TypePlaybook Run8-Configuration as Code Job に似たものが表示されます。

jobs

ジョブが完了すると、ステータスは Successful になります。

管理者としてログアウトし、パスワード redhat を使用して john というユーザーとして再ログインすると、ジョブが成功したことを確認できます。

この章の内容すべてに従い Ansible Automation Platform サイトごとに Webhook を適切に設定すると、対応する Ansible Automation Platform によってユーザー john が同時に作成されたことがわかります。

これは単純化された例ですが、Ansible Automation Platform 自動化コントローラーで許可されている設定 (ロール) の多くは、redhat_cop.controller_configuration 内に提供されています。

追加の例は、Example configs で見つけることができます。

Ansible コレクションには、多くの必要となる重要なロールがありますが、Ansible コレクション内にあるものだけに限定されるわけではありません。組織が新しいロールを実装または作成して、機能をさらに強化することもできます。

付録A 著者について

author

付録B コントリビューター

多くの時間を割いて、忍耐強くこのプロセスに協力してくださった次の方々に感謝申し上げます。その多大な貢献なしに、このドキュメントは実現しませんでした。

コントリビューター役職貢献内容

Landon Holley

シニアコンサルティングアーキテクト

テクニカルレビュー

Ajay Chenampara

プリンシパルスペシャリストソリューションアーキテクト

テクニカルレビュー

Will Tome

プリンシパルスペシャリストソリューションアーキテクト

テクニカルレビュー

Sean Sullivan

シニアコンサルタント

テクニカルレビュー

Vinny Valdez

シニアマネージングアーキテクト

テクニカルレビュー

Chris Budzilowicz

プリンシパルテクニカルライター

コンテンツレビュー

Phil Avery

シニア Ansible スペシャリストソリューションアーキテクト

テクニカルレビュー

付録C 補足

C.1. 自動化コントローラー Playbook の設定

---
- name: Playbook to configure ansible Controller post installation
  hosts: localhost
  connection: local
  vars:
    controller_validate_certs: false
  collections:
    - awx.awx
    - redhat_cop.controller_configuration

  roles:
    - {role: settings, when: controller_settings is defined, tags: settings}
    - {role: organizations, when: controller_organizations is defined, tags: organizations}
    - {role: labels, when: controller_labels is defined, tags: labels}
    - {role: users, when: controller_user_accounts is defined, tags: users}
    - {role: teams, when: controller_teams is defined, tags: teams}
    - {role: credential_types, when: controller_credential_types is defined, tags: credential_types}
    - {role: credentials, when: controller_credentials is defined, tags: credentials}
    - {role: credential_input_sources, when: controller_credential_input_sources is defined, tags: credential_input_sources}
    - {role: notification_templates, when: controller_notifications is defined, tags: notification_templates}
    - {role: projects, when: controller_projects is defined, tags: projects}
    - {role: execution_environments, when: controller_execution_environments is defined, tags: execution_environments}
    - {role: applications, when: controller_applications is defined, tags: applications}
    - {role: inventories, when: controller_inventories is defined, tags: inventories}
    - {role: instance_groups, when: controller_instance_groups is defined, tags: instance_groups}
    - {role: project_update, when: controller_projects is defined, tags: projects}
    - {role: inventory_sources, when: controller_inventory_sources is defined, tags: inventory_sources}
    - {role: inventory_source_update, when: controller_inventory_sources is defined, tags: inventory_sources}
    - {role: hosts, when: controller_hosts is defined, tags: hosts}
    - {role: groups, when: controller_groups is defined, tags: inventories}
    - {role: job_templates, when: controller_templates is defined, tags: job_templates}
    - {role: workflow_job_templates, when: controller_workflows is defined, tags: workflow_job_templates}
    - {role: schedules, when: controller_schedules is defined, tags: schedules}
    - {role: roles, when: controller_roles is defined, tags: roles}

C.2. 自動化コントローラー設定用の group_vars/all.yml vars ファイル (ユーザー作成サンプル)

---
controller_user_accounts:
  - user: "colin"
    is_superuser: false
    password: "redhat"

C.3. 自動化コントローラー設定用の requirements.yml

collections:
- name: redhat_cop.controller_configuration
- name: awx.awx

付録D サブスクリプションマニフェストの生成

サブスクリプションマニフェストを正常に生成するには、以下を実行します。

  1. access.redhat.com にログインし、左上隅にある Subscriptions をクリックします。
  2. Subscriptions Allocations タブを選択します。
  3. New Subscription Allocation のラベルが付いたボタンを選択します。

    sub allocation
  4. Create a New subscription allocation ページで、Name を入力し、Type のドロップダウンボックスから Subscription Asset Manager 1.4 を選択して Create をクリックします。

    create sub
  5. 作成したら、Subscriptions タブを選択し、Ansible Automation Platform サブスクリプションと提供するエンタイトルメントの数を選択します。
  6. Details タブをクリックし、エンタイトルメントの数が正しいことを確認してから Export Manifest ボタンを選択します。

    export manifest
  7. Ansible Automation Platform ダッシュボードに戻り、manifest.zip をインポートして Next をクリックします。

    import manifest
  8. (推奨) Red Hat または Red Hat Satellite の認証情報を提供し、Next をクリックして、Ansible Automation Platform のユーザー分析とインサイトを有効にします。
  9. エンドユーザー使用許諾契約に同意します。

付録E 参考資料

付録F Revision History

改訂履歴
改訂 1.2-02022-05-03Anshul Behl,Roger Lopez
  • Added hop and execution node automation mesh firewalld port requirements
改訂 1.1-02022-04-11Roger Lopez
  • Fixed error in overview image where arrow pointing to wrong location.
  • Added database node minimum requirements to Ch.2 Prerequisites
改訂 1.0-02021-12-02Roger Lopez
  • Initial Release

法律上の通知

Copyright © 2023 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.