仮想マシン環境向け自動化メッシュ
クラウドネイティブな方法で大規模に自動化する
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible Automation Platform に興味をお持ちいただきありがとうございます。Ansible Automation Platform は、Ansible を装備した環境に、制御、ナレッジ、委譲の機能を追加して、チームが複雑かつ複数層のデプロイメントを管理できるように支援する商用サービスです。
このガイドでは、Red Hat Ansible Automation Platform の仮想マシンベースのインストールにおける自動化メッシュのセットアップに関する要件とプロセスを説明します。このガイドの更新により、Ansible Automation Platform の最新リリースの情報が追加されました。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントの改善に関するご意見がある場合や、エラーを発見した場合は、https://access.redhat.com から Technical Support チームに連絡してください。
第1章 仮想マシンベースの Red Hat Ansible Automation Platform 環境での自動化メッシュの計画 リンクのコピーリンクがクリップボードにコピーされました!
次のトピックには、仮想マシンベースの Ansible Automation Platform 環境における自動化メッシュのデプロイメントを計画する際に役立つ情報が含まれています。以降のセクションでは、自動化メッシュトポロジーを設計する方法の例に加えて、自動化メッシュを構成する概念を説明します。シンプルなトポロジーから複雑なトポロジーまでを例に使用して、自動化メッシュをデプロイするための各種の方法を示します。
1.1. 自動化メッシュについて リンクのコピーリンクがクリップボードにコピーされました!
自動化メッシュは、既存ネットワークを使用して互いにピアツーピア接続を確立しているノードを介して、大規模な分散ワーカーのコレクション全体で作業分散を容易にするオーバーレイネットワークです。
Red Hat Ansible Automation Platform 2 では、Ansible Tower と分離されたノードが Ansible Automation Platform と Automation Hub に置き換えられます。Ansible Automation Platform は、UI、RESTful API、RBAC、ワークフローおよび CI/CD 統合を介して自動化のコントロールプレーンを提供します。一方、自動化メッシュは、制御および実行レイヤーを構成するノードのセットアップ、検出、変更、または修正に使用できます。
自動化メッシュは通信に TLS 暗号化を使用するため、外部ネットワーク (インターネットまたはその他) を通過するトラフィックは転送中に暗号化されます。
自動化メッシュは以下のものを提供します。
- 個別にスケーリングする動的クラスター容量。これにより、ダウンタイムを最小限に抑えてノードを作成、登録、グループ化、グループ化解除、および登録解除できます。
- コントロールプレーンと実行プレーンの分離。コントロールプレーンの容量とは関係なく Playbook の実行容量をスケーリングできます。
- 遅延に対する回復力があり、停止することなく再設定可能であり、停止した場合は動的に再ルーティングして別のパスを選択するデプロイメントの選択肢。
- Federal Information Processing Standards (FIPS) に準拠する双方向、マルチホップのメッシュ通信の可能性を含む接続性。
1.2. コントロールプレーンおよび実行プレーン リンクのコピーリンクがクリップボードにコピーされました!
自動化メッシュでは、ユニークなノードタイプを使用して コントロール プレーンと 実行 プレーンの両方を作成します。自動化メッシュトポロジーを設計する前に、コントロールプレーンおよび実行プレーン、ならびにそのノードタイプの詳細を確認してください。
1.2.1. コントロールプレーン リンクのコピーリンクがクリップボードにコピーされました!
コントロールプレーン は、ハイブリッドノードおよびコントロールノードで構成されます。コントロールプレーンのインスタンスは、プロジェクト更新や管理ジョブに加えて、Web サーバーやタスクディスパッチャーなどの永続的な自動化コントローラーサービスを実行します。
-
ハイブリッドノード: これはコントロールプレーンノードのデフォルトのノードタイプです。これは、プロジェクト更新、管理ジョブ、
ansible-runnerタスク操作などの自動化コントローラーランタイム機能に対応します。ハイブリッドノードは、自動化の実行にも使用されます。 - コントロールノード: コントロールノードは、プロジェクトおよびインベントリーの更新およびシステムジョブを実行しますが、通常のジョブは実行しません。これらのノードでは実行機能は無効になります。
1.2.2. 実行プレーン リンクのコピーリンクがクリップボードにコピーされました!
実行プレーン は、コントロールプレーンの代わりに自動化を実行し制御機能を持たない実行ノードで構成されます。ホップノードは、通信に対応します。実行プレーン のノードは、地理的にコントロールプレーンから離れた、レイテンシーの高いユーザー空間のジョブのみを実行します。
-
実行ノード - 実行ノードは、
podman分離によりansible-runnerでジョブを実行します。このノードタイプは分離されたノードに似ています。これは、実行プレーンノードのデフォルトのノードタイプです。 - ホップノード - ジャンプホストと同様に、ホップノードはトラフィックを他の実行ノードにルーティングします。ホップノードは自動化を実行できません。
1.2.3. ピア リンクのコピーリンクがクリップボードにコピーされました!
ピアの関係はノード間の接続を定義します。[automationcontroller] グループおよび [execution_nodes] グループ内にピアを定義するか、[automationcontroller:vars] または [execution_nodes:vars] グループを使用します。
1.2.4. 自動化メッシュノードタイプの定義 リンクのコピーリンクがクリップボードにコピーされました!
このセクションの例は、インベントリーファイルでホストのノードタイプを設定する方法を示しています。
コントロールプレーンまたは実行プレーンインベントリーグループ内の単一ノードの node_type を設定できます。ノードのグループ全体のノードタイプを定義するには、グループの vars スタンザで node_type を設定します。
-
コントロールプレーン
[automationcontroller]グループのnode_typeに許可される値は、hybrid(デフォルト) とcontrolです。 -
[execution_nodes]グループのnode_typeに許可される値は、execution(デフォルト) とhopです。
ハイブリッドノード
次のインベントリーは、コントロールプレーンの単一のハイブリッドノードで構成されています。
[automationcontroller] control-plane-1.example.com
[automationcontroller]
control-plane-1.example.com
コントロールノード
次のインベントリーは、コントロールプレーンの単一のコントロールノードで構成されています。
[automationcontroller] control-plane-1.example.com node_type=control
[automationcontroller]
control-plane-1.example.com node_type=control
コントロールプレーンノードの vars スタンザで node_type を control に設定すると、コントロールプレーン内のすべてのノードがコントロールノードになります。
[automationcontroller] control-plane-1.example.com [automationcontroller:vars] node_type=control
[automationcontroller]
control-plane-1.example.com
[automationcontroller:vars]
node_type=control
実行ノード
次のスタンザは、実行プレーンで単一の実行ノードを定義します。
[execution_nodes] execution-plane-1.example.com
[execution_nodes]
execution-plane-1.example.com
ホップノード
次のスタンザは、実行プレーン内の単一のホップノードと実行ノードを定義します。node_type 変数は、個々のノードごとに設定されます。
[execution_nodes] execution-plane-1.example.com node_type=hop execution-plane-2.example.com
[execution_nodes]
execution-plane-1.example.com node_type=hop
execution-plane-2.example.com
node_type をグループレベルで設定する場合は、実行ノードとホップノードに個別のグループを作成する必要があります。
ピア接続
peers= ホスト変数を使用して、ノード間の接続を作成します。以下の例では、control-plane-1.example.com を execution-node-1.example.com に、execution-node-1.example.com を execution-node-2.example.com に、それぞれ接続します。
第2章 自動化メッシュの設定 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インストーラーを設定して、Ansible 環境の自動化メッシュをセットアップします。認証局 (CA) 証明書のインポートなど、インストールをカスタマイズするための追加のタスクを実行します。
2.1. 自動化メッシュのインストール リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform の仮想マシンベースのインストールでは、インストールプログラムを使用して自動化メッシュをセットアップするか、自動化メッシュにアップグレードします。メッシュネットワーク内のノード、グループ、およびピア関係に関する詳細を Ansible Automation Platform に提供する場合は、インストーラーバンドルの inventory ファイルで定義します。マネージドクラウド、OpenShift、または Operator 環境は、マネージドクラウドまたは Operator 環境向けの自動化メッシュ を参照してください。
2.2. Red Hat Ansible Automation Platform インストーラーのインベントリーファイルの編集 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible Automation Platform インストーラーのインベントリーファイルを使用して、インストールシナリオを指定できます。
手順
インストーラーに移動します。
[RPM インストールされたパッケージ]
cd /opt/ansible-automation-platform/installer/
$ cd /opt/ansible-automation-platform/installer/Copy to Clipboard Copied! Toggle word wrap Toggle overflow [バンドルのインストーラー]
cd ansible-automation-platform-setup-bundle-<latest-version>
$ cd ansible-automation-platform-setup-bundle-<latest-version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow [オンラインインストーラー]
cd ansible-automation-platform-setup-<latest-version>
$ cd ansible-automation-platform-setup-<latest-version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
テキストエディターで
inventoryファイルを開きます。 -
inventoryファイルのパラメーターを編集して、インストールシナリオを指定します。詳細は、Red Hat Ansible Automation Platform インストーラーインベントリーファイルの編集 を参照してください。
2.3. Red Hat Ansible Automation Platform インストーラー設定スクリプトの実行 リンクのコピーリンクがクリップボードにコピーされました!
必要なパラメーターを使用してインベントリーファイルを更新した後、インストーラーセットアップスクリプトを実行します。
手順
setup.shスクリプトを実行します。sudo ./setup.sh
$ sudo ./setup.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
sudo 権限を持つ root 以外のユーザーとしてセットアップを実行している場合は、次のコマンドを使用できます。
ANSIBLE_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ./setup.sh
$ ANSIBLE_BECOME_METHOD='sudo'
ANSIBLE_BECOME=True ./setup.sh
Red Hat Ansible Automation Platform のインストールが開始します。
関連情報
その他の setup.sh スクリプトの例は、Understanding privilege escalation を参照してください。
初期セットアップの後にノードを自動化メッシュに追加する場合は、インベントリーファイルを編集して新しいノードを追加し、setup.sh スクリプトを再実行します。
2.4. 認証局 (CA) 証明書のインポート リンクのコピーリンクがクリップボードにコピーされました!
認証局 (CA) は、自動化メッシュ環境で個々のノード証明書を検証して署名します。Red Hat Ansible Automation Platform インストーラーの inventory ファイルで証明書のパスと秘密 RSA キーファイルを指定すると、独自の CA を提供できます。
CA を提供しないと、Ansible Automation Platform インストールプログラムが CA を生成します。
手順
-
編集する
inventoryファイルを開きます。 -
mesh_ca_keyfile変数を追加し、秘密 RSA キー (.key) へのフルパスを指定します。 -
mesh_ca_certfile変数を追加し、CA 証明書ファイル (.crt) へのフルパスを指定します。 - 変更をインベントリーファイルに保存します。
例
[all:vars] mesh_ca_keyfile=/tmp/<mesh_CA>.key mesh_ca_certfile=/tmp/<mesh_CA>.crt
[all:vars]
mesh_ca_keyfile=/tmp/<mesh_CA>.key
mesh_ca_certfile=/tmp/<mesh_CA>.crt
インベントリーファイルに CA ファイルを追加したら、インストールプログラムを実行して CA を適用します。このプロセスは、CA をメッシュネットワーク上の各コントロールノードおよび実行ノードの /etc/receptor/tls/ca/ ディレクトリーにコピーします。
第3章 自動化メッシュの設計パターン リンクのコピーリンクがクリップボードにコピーされました!
このセクションの自動化メッシュトポロジーは、環境でメッシュのデプロイメントを設計するのに使用できる例を提供しています。単純なハイブリッドノードのデプロイメントから、複数の自動化コントローラーインスタンスをデプロイし、複数の実行ノードおよびホップノードを使用する複雑なパターンまで、さまざまな例が用意されています。
コンテナー化された環境で次のようなメッシュを作成する場合は、インベントリーファイルで node_type 変数を receptor_type に、peers 変数を receptor_peers に置き換えます。
前提条件 * ノードタイプと関係の概念情報を復習した
次の例には、メッシュトポロジーを示すイメージが含まれています。イメージの矢印は、ピアリングの方向を示しています。ピアリングが確立されると、ノード間の接続により双方向通信が可能になります。
3.1. 複数ハイブリッドノードのインベントリーファイルの例 リンクのコピーリンクがクリップボードにコピーされました!
このインベントリーファイルのサンプルは、複数のハイブリッドノードで構成されるコントロールプレーンをデプロイします。コントロールプレーンのノードは、自動的に相互にピアリングされます。
[automationcontroller] aap_c_1.example.com aap_c_2.example.com aap_c_3.example.com
[automationcontroller]
aap_c_1.example.com
aap_c_2.example.com
aap_c_3.example.com
次の図は、このメッシュネットワークのトポロジーを示しています。
コントロールプレーンのノードのデフォルトの node_type は Hybrid です。[automationcontroller group] で個々のノードの node_type を hybrid に明示的に設定できます。
[automationcontroller] aap_c_1.example.com node_type=hybrid aap_c_2.example.com node_type=hybrid aap_c_3.example.com node_type=hybrid
[automationcontroller]
aap_c_1.example.com node_type=hybrid
aap_c_2.example.com node_type=hybrid
aap_c_3.example.com node_type=hybrid
または、[automationcontroller] グループ内の全ノードの node_type を設定できます。コントロールプレーンに新しいノードを追加すると、自動的にハイブリッドノードに設定されます。
将来、コントロールプレーンにコントロールノードを追加する可能性がある場合は、ハイブリッドノード用に別のグループを定義し、グループの node_type を設定することが推奨されます。
3.2. 単一の実行ノードを持つ単一ノードのコントロールプレーン リンクのコピーリンクがクリップボードにコピーされました!
このサンプルインベントリーファイルは、単一ノードのコントロールプレーンをデプロイし、実行ノードに対してピア関係を確立します。
次の図は、このメッシュネットワークのトポロジーを示しています。
[automationcontroller] スタンザは制御ノードを定義します。自動化コントローラーグループに新しいノードを追加すると、自動的に aap_c_1.example.com ノードとピアリングされます。
[automationcontroller:vars] スタンザは、ノードタイプを control プレーン内のすべてのノードを制御するように設定し、ノードが実行ノードとどのようにピアリングするかを定義します。
-
execution_nodesグループに新しいノードを追加すると、コントロールプレーンノードは自動的にそれにピアリングします。 -
新しいノードを
automationcontrollerグループに追加すると、ノードタイプはcontrolに設定されます。
[execution_nodes] スタンザは、インベントリー内の全実行ノードとホップノードを一覧表示します。デフォルトのノードタイプは execution です。個々のノードのノードタイプを指定できます。
[execution_nodes] aap_e_1.example.com node_type=execution
[execution_nodes]
aap_e_1.example.com node_type=execution
または、[execution_nodes] グループ内の全実行ノードの node_type を設定できます。グループに新しいノードを追加すると、そのノードは自動的に実行ノードに設定されます。
[execution_nodes] aap_e_1.example.com [execution_nodes:vars] node_type=execution
[execution_nodes]
aap_e_1.example.com
[execution_nodes:vars]
node_type=execution
将来ホップノードをインベントリーに追加する予定がある場合は、実行ノード用に別のグループを定義し、グループの node_type を設定することが推奨されます。
3.3. 回復力のある最小設定 リンクのコピーリンクがクリップボードにコピーされました!
このサンプルインベントリーファイルは、2 つのコントロールノードと 2 つの実行ノードで構成されるコントロールプレーンをデプロイします。コントロールプレーン内のすべてのノードは、自動的に相互にピアリングされます。コントロールプレーンのすべてのノードは、execution_nodes グループのすべてのノードとピアリングされます。この設定は、すべての制御ノードから実行ノードに到達できるため、回復力があります。
容量アルゴリズムは、ジョブが開始されたときに選択される制御ノードを決定します。詳細は、「自動化実行の設定」の Automation Controller の容量決定とジョブへの影響 を参照してください。
次のインベントリーファイルは、この設定を定義します。
[automationcontroller] スタンザは制御ノードを定義します。コントロールプレーン内のすべてのノードは、相互にピアリングされます。新しいノードを automationcontroller グループに追加すると、元のノードと自動的にピアリングされます。
[automationcontroller:vars] スタンザは、ノードタイプを control プレーン内のすべてのノードを制御するように設定し、ノードが実行ノードとどのようにピアリングするかを定義します。
-
execution_nodesグループに新しいノードを追加すると、コントロールプレーンノードは自動的にそれにピアリングします。 -
新しいノードを
automationcontrollerグループに追加すると、ノードタイプはcontrolに設定されます。
次の図は、このメッシュネットワークのトポロジーを示しています。
3.4. 分離されたローカルおよびリモート実行設定 リンクのコピーリンクがクリップボードにコピーされました!
この設定は、ホップノードとリモート実行ノードを回復力のある設定に追加します。リモート実行ノードは、ホップノードから到達可能です。
リモートの場所に実行ノードをセットアップする場合、または DMZ ネットワークで自動化を実行する必要がある場合は、このセットアップを使用できます。
次の図は、このメッシュネットワークのトポロジーを示しています。
[automationcontroller:vars] スタンザは、コントロールプレーン内の全ノードのノードタイプを設定し、コントロールノードがローカル実行ノードとピアリングする方法を定義します。
- コントロールプレーン内のすべてのノードは、自動的に相互にピアリングされます。
- コントロールプレーンのすべてのノードは、すべてのローカル実行ノードとピアリングされます。
ノードのグループの名前が instance_group_ で始まる場合、インストーラーはそれをインスタンスグループとして認識し、Ansible Automation Platform ユーザーインターフェイスに追加します。
3.5. マルチホップ実行ノード リンクのコピーリンクがクリップボードにコピーされました!
この設定では、回復力のあるコントローラーノードが回復力のあるローカル実行ノードとピアリングされます。回復力のあるローカルホップノードは、コントローラーノードとピアリングされます。リモート実行ノードとリモートホップノードは、ローカルホップノードとピアリングされます。
リモートネットワークから DMZ ネットワークで自動化を実行する必要がある場合は、このセットアップを使用できます。
次の図は、このメッシュネットワークのトポロジーを示しています。
[automationcontroller:vars] スタンザは、コントロールプレーン内の全ノードのノードタイプを設定し、コントロールノードがローカル実行ノードとピアリングする方法を定義します。
- コントロールプレーン内のすべてのノードは、自動的に相互にピアリングされます。
- コントロールプレーンのすべてのノードは、すべてのローカル実行ノードとピアリングされます。
[local_hop:vars] スタンザは、[local_hop] グループ内のすべてのノードをすべての制御ノードとピアリングします。
ノードのグループの名前が instance_group_ で始まる場合、インストーラーはそれをインスタンスグループとして認識し、Ansible Automation Platform ユーザーインターフェイスに追加します。
3.6. コントローラーノードへの送信のみの接続 リンクのコピーリンクがクリップボードにコピーされました!
このサンプルインベントリーファイルは、複数のコントロールノードと 2 つの実行ノードで構成されるコントロールプレーンをデプロイします。コントローラーノードへの送信接続のみが許可されます。'execution_nodes' グループ内のすべてのノードは、コントローラープレーン内のすべてのノードとピアリングされます。
次の図は、このメッシュネットワークのトポロジーを示しています。
第4章 個々のノードまたはグループのプロビジョニング解除 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インストーラーを使用して、自動化メッシュノードおよびインスタンスグループのプロビジョニングを解除できます。サンプルのインベントリーファイルを使用して、特定のノードまたはグループ全体のプロビジョニングを解除する方法を学習します。
コンテナー化された Ansible Automation Platform のデプロイメントでは node_state=deprovision パラメーターはサポートされません。コンテナー化されたデプロイメントの場合、awx-manage コマンドを使用してノードとグループのプロビジョニングを解除します。詳細は、分離ノードのプロビジョニング解除 および 分離された インスタンスグループのプロビジョニング解除 を参照し てください。
4.1. インストーラーを使用した個別ノードのプロビジョニング解除 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インストーラーを使用して、自動化メッシュからノードのプロビジョニングを解除できます。inventory ファイルを編集して、プロビジョニングを解除するノードをマークしてから、インストーラーを実行します。インストーラーを実行すると、ノードに割り当てられたすべての設定ファイルおよびログも削除されます。
[automationcontroller] グループで指定されている最初のホストを除き、インベントリーの任意のホストのプロビジョニングを解除することができます。
手順
インストーラーファイルで、プロビジョニング解除するノードに
node_state=deprovisionを追加します。次のインベントリーファイルの例では、自動化メッシュの設定から 2 つのノードをプロビジョニング解除します。
例4.1 ノードのプロビジョニング解除
4.2. 分離されたノードのプロビジョニング解除 リンクのコピーリンクがクリップボードにコピーされました!
awx-manage プロビジョニング解除ユーティリティーを使用して、分離されたノードを手動で削除するオプションがあります。
プロビジョニング解除コマンドは、実行ノードに移行されていない分離されたノードのみを削除するために使用します。自動化メッシュアーキテクチャーから実行ノードをプロビジョニング解除するには、代わりに インストーラーを使用して個々のノードをプロビジョニング解除する 方法を使用してください。
手順
インスタンスをシャットダウンします。
automation-controller-service stop
$ automation-controller-service stopCopy to Clipboard Copied! Toggle word wrap Toggle overflow 別のインスタンスからプロビジョニング解除コマンドを実行し、
host_nameをインベントリーファイルにリストされているノードの名前に置き換えます。awx-manage deprovision_instance --hostname=<host_name>
$ awx-manage deprovision_instance --hostname=<host_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3. インストーラーを使用したグループのプロビジョニング解除 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インストーラーを使用して、自動化メッシュからグループ全体のプロビジョニングを解除できます。インストーラーを実行すると、グループ内のノードに割り当てられたすべての設定ファイルおよびログが削除されます。
[automationcontroller] グループで指定されている最初のホストを除き、インベントリーの任意のホストのプロビジョニングを解除することができます。
手順
-
node_state=deprovisionを、プロビジョニング解除するグループに関連付けられた [group:vars] に追加します。
例4.2 グループのプロビジョニング解除
4.4. 分離されたインスタンスグループのプロビジョニング解除 リンクのコピーリンクがクリップボードにコピーされました!
awx-manage プロビジョニング解除ユーティリティーを使用して、分離されたインスタンスグループを手動で削除するオプションがあります。
プロビジョニング解除コマンドは、分離されたインスタンスグループのみを削除するために使用します。自動化メッシュアーキテクチャーからインスタンスグループのプロビジョニングを解除するには、代わりに インストーラーを使用してグループをプロビジョニング解除する 方法を使用します。
手順
次のコマンドを実行し、
<name>をインスタンスグループの名前に置き換えます。awx-manage unregister_queue --queuename=<name>
$ awx-manage unregister_queue --queuename=<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow