1.6. インストーラーインベントリーファイルについて
Red Hat Ansible Automation Platform は、インベントリーファイルを使用して、論理的に編成されたインフラストラクチャー内の管理対象ノードまたはホストのリストに対して機能します。Red Hat Ansible Automation Platform インストーラーインベントリーファイルを使用して、インストールシナリオを指定し、Ansible へのホストのデプロイについて説明できます。インベントリーファイルを使用することで、Ansible は単一のコマンドで多数のホストを管理できます。インベントリーは、指定する必要があるコマンドラインオプションの数を減らすことで、Ansible をより効率的に使用するのにも役立ちます。
インベントリーファイルは、所有するインベントリープラグインに応じて、多数ある形式のいずれかになります。最も一般的な形式は INI と YAML です。このドキュメントに記載されているインベントリーファイルは、INI 形式で示されています。
インベントリーファイルの場所は、使用したインストーラーによって異なります。次の表に、可能な場所を示します。
| インストーラー | ロケーション |
|---|---|
| Bundle tar |
|
| Non-bundle tar |
|
| RPM |
|
次のコマンドを使用して、インベントリー内のホストを確認できます。
ansible all -i <path-to-inventory-file. --list-hosts
ansible all -i <path-to-inventory-file. --list-hosts
インベントリーファイルの例
インベントリーファイルの最初の部分は、Ansible が使用できるホストまたはグループを指定します。
1.6.1. ホストとグループのガイドライン リンクのコピーリンクがクリップボードにコピーされました!
データベース
-
外部データベースを使用する場合は、インベントリーファイルの
databaseセクションが正しく設定されていることを確認してください。 - パフォーマンスを向上させるために、データベースと Automation Controller を同じサーバーに配置しないでください。
Automation Hub
-
[automationhub]グループに Ansible Automation Hub 情報を追加します。 - Ansible Automation Hub と Automation Controller を同じノードにインストールしないでください。
-
[automationhub]ホストに到達可能な IP アドレスまたは完全修飾ドメイン名 (FQDN) を提供して、ユーザーが別のノードから Ansible Automation Hub のコンテンツを同期してインストールできるようにします。localhostは使用しないでください。
Automation Controller と Ansible Automation Hub を別々にインストールする必要があります。両方が同時にインストールされている場合、[database] グループは 2 つを区別しないからです。
[database] で 1 つの値を使用し、Automation Controller と Ansible Automation Hub の両方がそれを定義する場合、それらは同じデータベースを使用します。
Automation Controller
- Automation Controller は、使用するデータベースのレプリケーションまたはフェイルオーバーを設定しません。Automation Controller は、所有しているすべてのレプリケーションで機能します。
クラスター化されたインストール
- 既存のクラスターをアップグレードする場合は、既存のインスタンスまたはインスタンスグループを省略するようにクラスターを再設定することもできます。インスタンスまたはインスタンスグループをインベントリーファイルから省略するだけでは、クラスターから削除するには不十分です。インベントリーファイルからインスタンスまたはインスタンスグループを除外するほかに、アップグレードを開始する前にインスタンスまたはインスタンスグループのプロビジョニングを解除する必要もあります。ノードまたはグループのプロビジョニング解除 を参照してください。そうしないと、省略されたインスタンスまたはインスタンスグループが引き続きクラスターと通信するため、アップグレード中に Automation Controller サービスで問題が発生する可能性があります。
クラスター化されたインストールセットアップを作成している場合は、
[localhost]をすべてのインスタンスのホスト名または IP アドレスに置き換える必要があります。Automation Controller、Automation Hub、および自動化サービスカタログのインストーラーは[localhost]を受け入れません。すべてのノードとインスタンスは、このホスト名またはアドレスを使用して他のノードに到達できる必要があります。いずれかのノードで localhostansible_connection=localを使用することはできません。すべてのノードのホスト名に同じ形式を使用します。したがって、これは機能しません。
[automationhub] localhost ansible_connection=local hostA hostB.example.com 172.27.0.4
[automationhub] localhost ansible_connection=local hostA hostB.example.com 172.27.0.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 代わりに以下の形式を使用します。
[automationhub] hostA hostB hostC
[automationhub] hostA hostB hostCCopy to Clipboard Copied! Toggle word wrap Toggle overflow または
[automationhub] hostA.example.com hostB.example.com hostC.example.com
[automationhub] hostA.example.com hostB.example.com hostC.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.2. ノードまたはグループのプロビジョニング解除 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Automation Platform インストーラーを使用して、ノードとインスタンスグループのプロビジョニングを解除できます。インストーラーを実行すると、グループ内のノードに割り当てられたすべての設定ファイルおよびログが削除されます。
[automationcontroller] グループで指定されている最初のホストを除き、インベントリーの任意のホストのプロビジョニングを解除することができます。
ノードのプロビジョニングを解除するには、インベントリーファイル内のノードまたはグループに node_state=deprovision を追加します。
以下に例を示します。
デプロイメントから単一のノードを削除するには、以下を実行します。
[automationcontroller] host1.example.com host2.example.com host4.example.com node_state=deprovision
[automationcontroller]
host1.example.com
host2.example.com
host4.example.com node_state=deprovision
または
デプロイからインスタンスグループ全体を削除するには、以下を実行します。
1.6.3. インベントリー変数 リンクのコピーリンクがクリップボードにコピーされました!
サンプルインベントリーファイルの [all:vars] に続く 2 番目の部分は、インストーラーによって使用される変数のリストです。all を使用すると、変数がすべてのホストに適用されます。
特定のホストに変数を適用するには、[hostname:vars] を使用します。たとえば、[automationhub:vars] です。
1.6.4. インベントリーファイルで変数を宣言するためのルール リンクのコピーリンクがクリップボードにコピーされました!
文字列変数の値は、引用符で囲んで宣言します。以下に例を示します。
pg_database='awx' pg_username='awx' pg_password='<password>'
pg_database='awx'
pg_username='awx'
pg_password='<password>'
:vars セクションで宣言すると、INI 値は文字列として解釈されます。たとえば、var=FALSE は FALSE に等しい文字列を作成します。ホスト行とは異なり、:vars セクションは行ごとに 1 つのエントリーのみを受け入れるため、= の後のすべてがエントリーの値である必要があります。ホスト行は、行ごとに複数の key=value パラメーターを受け入れます。したがって、スペースがセパレーターではなく値の一部であることを示す方法が必要です。空白を含む値は引用符で囲むことができます (一重または二重)。詳細は、Python shlex parsing rules を参照してください。
INI インベントリーに設定された変数値が特定の型 (文字列やブール値など) でなければならない場合は、常にタスクでフィルターを使用して型を指定します。変数を使用するときは、INI インベントリーで設定されたタイプに依存しないでください。
変数の実際の型に関する混乱を避けるために、インベントリーソースに YAML 形式を使用することを検討してください。YAML インベントリープラグインは、変数値を一貫して正しく処理します。
Ansible インベントリーファイルのパラメーター値に、#、{ または } などの特殊文字が含まれている場合は、値をダブルエスケープ (double-escape) する必要があります (値を単一と二重引用符で囲みます)。
たとえば、mypasswordwith#hashsigns を変数 pg_password の値として使用するには、Ansible ホストインベントリーファイルで pg_password='"mypasswordwith#hashsigns"' として宣言します。
1.6.5. インベントリーファイルでシークレットを保護する リンクのコピーリンクがクリップボードにコピーされました!
Ansible Vault を使用して機密変数または秘密変数を暗号化できます。ただし、変数名と変数値を暗号化すると、値のソースを見つけるのが難しくなります。これを回避するには、ansible-vault encrypt_string を使用して変数を個別に暗号化するか、変数を含むファイルを暗号化します。
手順
暗号化された認証情報を保存するために、
credentials.ymlというラベルの付いたファイルを作成します。cat credentials.yml admin_password: my_long_admin_pw pg_password: my_long_pg_pw registry_password: my_long_registry_pw
$ cat credentials.yml admin_password: my_long_admin_pw pg_password: my_long_pg_pw registry_password: my_long_registry_pwCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vaultを使用してcredentials.ymlファイルを暗号化します。ansible-vault encrypt credentials.yml New Vault password: Confirm New Vault password: Encryption successful
$ ansible-vault encrypt credentials.yml New Vault password: Confirm New Vault password: Encryption successfulCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要暗号化された vault パスワードを安全な場所に保管します。
credentials.ymlファイルが暗号化されていることを確認します。cat credentials.yml $ANSIBLE_VAULT;1.1; AES256363836396535623865343163333339613833363064653364656138313534353135303764646165393765393063303065323466663330646232363065316666310a373062303133376339633831303033343135343839626136323037616366326239326530623438396136396536356433656162333133653636616639313864300a353239373433313339613465326339313035633565353464356538653631633464343835346432376638623533613666326136343332313163343639393964613265616433363430633534303935646264633034383966336232303365383763
$ cat credentials.yml $ANSIBLE_VAULT;1.1; AES256363836396535623865343163333339613833363064653364656138313534353135303764646165393765393063303065323466663330646232363065316666310a373062303133376339633831303033343135343839626136323037616366326239326530623438396136396536356433656162333133653636616639313864300a353239373433313339613465326339313035633565353464356538653631633464343835346432376638623533613666326136343332313163343639393964613265616433363430633534303935646264633034383966336232303365383763Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible Automation Platform 2.2 のインストールのために
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_BECOME_METHOD='sudo' ANSIBLE_BECOME=True ANSIBLE_HOST_KEY_CHECKING=False ./setup.sh -e @credentials.yml -- --ask-vault-passCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.6. 追加のインベントリーファイル変数 リンクのコピーリンクがクリップボードにコピーされました!
インベントリーファイルに追加変数を追加して、Red Hat Ansible Automation Platform インストールをさらに設定できます。これらの設定では、Red Hat Ansible Automation Platform 管理用のオプション機能を追加します。テキストエディターでインベントリーファイルを編集して、これらの変数を追加します。
インベントリーファイル変数の定義済み値の表は、付録 A: インベントリーファイル変数 にあります。