2.3. 自動化メッシュノードタイプの定義
ジョブの容量を拡張するには、Automation Controller のデプロイメントと一緒に実行するように追加できるスタンドアロンの 実行ノード を作成します。これらの実行ノードは、Automation Controller Kubernetes クラスターの一部ではありません。
クラスター内で実行される制御ノードは、Receptor を介して実行ノードに接続し、作業を送信します。
これらの実行ノードは、タイプ execution インスタンスとして、Automation Controller に登録されます。つまり、コントロールノードのように作業をディスパッチしたり、Web リクエストを処理したりするのではなく、ジョブを実行するためにのみ使用されます。
実行ノードを作成するときは、実行ノードのシステムタイムゾーンが Automation Controller の settings.TIME_ZONE (デフォルトは 'UTC') と一致していることを確認してください。ファクトキャッシュは、アーティファクトファイルの変更時刻の比較に依存していますが、これらの変更時刻はタイムゾーンを認識しません。したがって、実行ノードのタイムゾーンが Automation Controller のタイムゾーン設定と一致することが重要です。
ホップノード は、Automation Controller のコントロールプレーンとスタンドアロン実行ノードの間に追加できます。これらのホップノードは Kubernetes クラスターの一部ではなく、タイプ hop のインスタンスとして Automation Controller に登録されます。つまり、別のネットワークまたはより厳密なネットワーク内で到達不可能なノードへの受信および送信のトラフィックのみを処理します。
次の手順は、ホストのノードタイプを設定する方法を示しています。
デフォルトでは、AWS 上の Red Hat Ansible Automation Platform Service には、実行ノードをピアリングできる 2 つのホップノードが含まれています。
手順
-
ナビゲーションパネルから
を選択します。 Instances リストページで、 をクリックします。Add Instance ウィンドウが開きます。
インスタンスには次の属性が必要です。
Host name: (必須) インスタンスの完全修飾ドメイン名 (パブリック DNS) または IP アドレスを入力します。このフィールドは、インストーラーベースのデプロイメントの
hostnameに相当します。注記インスタンスがコントロールクラスターから解決できないプライベート DNS を使用している場合、DNS ルックアップルーティングは失敗し、生成された SSL 証明書は無効になります。代わりに IP アドレスを使用してください。
- オプション: Description: インスタンスの説明を入力します。
- Instance state: このフィールドは自動入力され、インストール中であることを示します。変更はできません。
-
Listener port: このポートは、受信接続をリッスンするために receptor に使用されます。ポートを設定に適したポートに設定できます。このフィールドは、API の
listener_portに相当します。デフォルト値は 27199 ですが、独自のポート値を設定できます。 Instance type:
executionノードおよびhopノードのみを作成できます。Operator ベースのデプロイメントは、コントロールノードまたはハイブリッドノードをサポートしません。オプション:
- Enable instance: 実行ノード上でジョブを実行できるようにするには、このボックスをオンにします。
- Managed by policy ボックスをオンにして、ポリシーがインスタンスの割り当て方法を決定できるようにします。
Peers from control nodes:
ホップノードを設定する場合:
- 要求を Automation Controller からホップノードに直接プッシュする必要がある場合は、Peers from Control チェックボックスをオンにします。
- ホップノードを別のホップノードにピアリングする場合は、Peers from Control チェックボックスがオンになっていないことを確認します。
実行ノードを設定する場合:
- 要求を Automation Controller から実行ノードに直接プッシュする必要がある場合は、Peers from Control チェックボックスをオンにします。
- 実行ノードをホップノードにピアリングする場合は、Peers from Control チェックボックスがオンになっていないことを確認します。
- をクリックします。
ピアリング設定とトラフィックの方向を確認するために、トポロジービューを使用して、更新されたトポロジーのグラフィカル表現を表示します。これは、ファイアウォールルールを更新する必要がある場所を特定するのに役立ちます。詳細は、トポロジービュー を参照してください。
注記次の手順は、新しく作成したインスタンスへの SSH アクセスが可能な任意のコンピューターから実行してください。
Download Bundle の横にある
アイコンをクリックして、この新しいインスタンスと、作成されたノードを自動化メッシュにインストールするために必要なファイルを含む tar ファイルをダウンロードします。
インストールバンドルには、TLS 証明書および鍵、認証局、適切な Receptor 設定ファイルが含まれています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ダウンロードした
tar.gzインストールバンドルを、ダウンロードした場所から展開します。これらのファイルがリモートマシン上の正しい場所にあることを確認するために、インストールバンドルにはinstall_receptor.ymlPlaybook が含まれています。 ansible-playbookコマンドを実行する前に、inventory.ymlファイル内の次のフィールドを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
ansible_hostが、ノードの IP アドレスまたは DNS に設定されていることを確認します。 -
ansible_userを、インストールを実行しているユーザー名に設定します。 -
ansible_ssh_private_key_fileを設定して、インスタンスへの接続に使用される秘密鍵のファイル名を含めます。 -
inventory.ymlファイルの内容はテンプレートとして機能し、メッシュトポロジーでの receptor ノードの設定中に適用されるロールの変数が含まれます。他のフィールドの一部を変更したり、高度なシナリオではファイル全体を置き換えることもできます。詳細は、Role Variables を参照してください。
-
プライベート DNS を使用するノードの場合は、次の行を
inventory.ymlに追加します。ansible_ssh_common_args: <your ssh ProxyCommand setting>
ansible_ssh_common_args: <your ssh ProxyCommand setting>Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、
install-ceptor.ymlPlaybook に、proxy コマンドを使用してローカル DNS ノード経由でプライベートノードに接続するように指示します。- 属性を設定したら、 をクリックします。作成したインスタンスの Details ページが開きます。
- ファイルを保存して続行します。
インストールバンドルを実行してリモートノードをセットアップし、
ansible-playbookを実行するシステムには、ansible.receptorコレクションがインストールされている必要があります。ansible-galaxy collection install ansible.receptor
ansible-galaxy collection install ansible.receptorCopy to Clipboard Copied! Toggle word wrap Toggle overflow または
ansible-galaxy install -r requirements.yml
ansible-galaxy install -r requirements.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
requirements.ymlファイルから receptor コレクションの依存関係をインストールすると、そこで指定された receptor のバージョンが一貫して取得されます。さらに、今後必要になる可能性のある他のコレクションの依存関係も取得されます。 - Playbook が実行されるすべてのノードに receptor コレクションをインストールします。インストールしない場合は、エラーが発生します。
-
receptor_listener_portが定義されている場合、マシンには、受信 TCP 接続を確立するために使用可能なオープンポート (27199 など) も必要です。次のコマンドを実行して、Receptor 通信用にポート 27199 を開きます (ファイアウォールでポート 27199 が開いていることを確認してください)。sudo firewall-cmd --permanent --zone=public --add-port=27199/tcp
sudo firewall-cmd --permanent --zone=public --add-port=27199/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 自動化メッシュを更新するマシン上で、次の Playbook を実行します。
ansible-playbook -i inventory.yml install_receptor.yml
ansible-playbook -i inventory.yml install_receptor.yml
+
この Playbook には OpenSSL が必要です。次のコマンドを実行してインストールできます。
openssl -v
openssl -v
返される場合は、OpenSSL のバージョンがインストールされています。返されない場合は、次のように OpenSSL をインストールする必要があります。
sudo dnf install -y openssl
sudo dnf install -y openssl
+ この Playbook を実行すると、自動化メッシュが設定されます。
場合によっては、サーバーが Receptor ポート (デフォルトは 27199) をリッスンしないことがあります。
ノード A、B、C を持つコントロールプレーンがあるとします。
以下は、3 つのコントローラーノードのピアリング設定です。
コントローラーノード A
コントローラーノード A
コントローラーノード B
以下を設定すると、リスナーを強制できます。
receptor_listener=True
ただし、接続コントローラー B
その場合、コントローラー A は他のノードへの接続を作成しているため、コントローラー A には何も接続されません。コントローラー A で次のコマンドを実行しても、何も返されません。
[root@controller1 ~]# ss -ntlp | grep 27199 [root@controller1 ~]#
RPM インストーラーは、最小限の特権アプローチを持つコントロールプレーンノード間で高度に接続されたピアリングを作成し、必要な場合にのみ TCP リスナーを開きます。すべてのレセプター接続は双方向であるため、接続が作成されると、レセプターは双方向で通信できます。
+ メッシュからインスタンスを削除するには、インスタンスの削除 を参照してください。
+