1.6. 关于安装程序清单文件
Red Hat Ansible Automation Platform 使用清单文件,根据您以逻辑方式组织的基础架构中的受管节点或主机列表进行工作。您可以使用 Red Hat Ansible Automation Platform 安装程序清单文件指定您的安装场景,并描述 Ansible 的主机部署。通过使用清单文件,Ansible 可以通过一个命令管理大量主机。清单还可以通过减少您指定的命令行选项数目来更有效地使用 Ansible。
根据您拥有的清单插件,清单文件可以采用多种格式。最常见的格式是 INI
和 YAML
。本文档中列出的清单文件以 INI 格式显示。
清单文件的位置取决于您使用的安装程序。下表显示了可能的位置:
安装程序 | 位置 |
---|---|
捆绑包 tar |
|
非捆绑包 tar |
|
RPM |
|
您可以使用以下命令验证清单中的主机:
ansible all -i <path-to-inventory-file. --list-hosts
清单文件示例
[automationcontroller] host1.example.com host2.example.com Host4.example.com [automationhub] host3.example.com [database] Host5.example.com [all:vars] admin_password='<password>' pg_host='' pg_port='' pg_database='awx' pg_username='awx' pg_password='<password>' registry_url='registry.redhat.io' registry_username='<registry username>' registry_password='<registry password>'
清单文件的第一个部分指定 Ansible 可使用的主机或主机组。
1.6.1. 主机和组指南
数据库
-
使用外部数据库时,请确保正确设置清单文件的
[database]
部分。 - 要提高性能,请不要在同一服务器上并置数据库和自动化控制器。
Automation hub
-
在
[automationhub]
组中添加 Ansible Automation hub 信息。 - 不要在同一节点上安装 Ansible Automation hub 和自动化控制器。
-
为
[automationhub]
主机提供可访问 IP 地址或完全限定域名(FQDN),以确保用户可以从不同节点从 Ansible Automation hub 同步和安装内容。不要使用localhost
。
您必须分隔自动化控制器和 Ansible 自动化中心的安装,因为 [database]
组无法区分这两个(如果同时安装了这两个组)。
如果您在 [database]
和自动化控制器和 Ansible 自动化中心中使用一个值,则它们将使用相同的数据库。
自动化控制器
- 自动化控制器将不会为其使用的数据库配置复制或故障转移功能。自动化控制器应该与已有的任何复制一起工作。
集群安装
- 在升级现有集群时,您还可以重新配置集群来忽略现有的实例或实例组。从清单文件中省略实例或实例组不足以将其从集群中移除。除了从清单文件中省略实例或实例组外,还必须在开始升级前取消置备实例或实例组。请参阅取消置备节点或组。否则,忽略的实例或实例组会继续与集群通信,这可能会在升级过程中造成自动化控制器服务的问题。
如果要创建集群安装设置,则必须使用所有实例的主机名或 IP 地址替换
[localhost]
。自动化控制器、自动化中心和自动服务目录的安装程序不接受[localhost]
所有节点和实例,且实例必须能够使用这个主机名或地址访问任何其他节点。您不能在其中一个节点上使用 localhostansible_connection=local
。对所有节点的主机名使用相同的格式。因此,这无法正常工作:
[automationhub] localhost ansible_connection=local hostA hostB.example.com 172.27.0.4
需要使用以下格式:
[automationhub] hostA hostB hostC
或
[automationhub] hostA.example.com hostB.example.com hostC.example.com
1.6.2. 取消置备节点或组
您可以使用 Ansible Automation Platform 安装程序取消置备节点和实例组。运行安装程序将删除附加到组中节点的所有配置文件和日志。
您可以取消置备清单中的任何主机,但 [automationcontroller]
组中指定的第一个主机除外。
要取消置备节点,请将 node_state=deprovision
附加到清单文件中的节点或组。
例如:
从部署中删除单个节点:
[automationcontroller] host1.example.com host2.example.com host4.example.com node_state=deprovision
或
从部署中删除整个实例组:
[instance_group_restrictedzone] host4.example.com host5.example.com [instance_group_restrictedzone:vars] node_state=deprovision
1.6.3. 清单变量
示例清单文件的第二部分(在 [all:vars]
后面)是安装程序使用的变量列表。使用 all
表示变量适用于所有主机。
要将变量应用到特定的主机,请使用 [hostname:vars]
。例如,[automationhub:vars]
。
1.6.4. 在清单文件中声明变量的规则
字符串变量的值在引号中声明。例如:
pg_database='awx' pg_username='awx' pg_password='<password>'
在 :vars
部分中声明时,INII 值将解释为字符串。例如,var=FALSE
创建一个等于 FALSE
的字符串。与主机行不同,:vars
部分每行只接受一个条目,因此 =
后的所有内容都必须是条目的值。主机行接受每行多个 key=value
参数。因此,它们需要使用一种方式来指出空格是值的一部分而不是分隔符。包含空格的值可以加上引号(单引号或双引号)。详情请查看 Python shlex 解析规则。
如果 INI 清单中设置的变量值必须是特定的类型(如字符串或布尔值),则始终在任务中使用过滤器指定类型。在消耗变量时,请勿依赖 INI 清单中设置的类型。
考虑将 YAML 格式用于清单源,以避免在变量的实际类型上产生混淆。YAML 清单插件会一致且正确处理变量值。
如果 Ansible 清单文件中的参数值包含特殊字符,如 #、{ 或 },则必须双重转义(用单引号和双引号包括该值)。
例如,要将 mypasswordwith#hashsigns
用作变量 pg_password
的值,在 Ansible 主机清单文件中请将其声明为 pg_password='"mypasswordwith#hashsigns"'
。
1.6.5. 保护清单文件中的 secret
您可以使用 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
使用
ansible-vault
加密credentials.yml
文件。$ ansible-vault encrypt credentials.yml New Vault password: Confirm New Vault password: Encryption successful
重要将加密的 vault 密码存储在安全的地方。
验证
credentials.yml
文件是否加密。$ cat credentials.yml $ANSIBLE_VAULT;1.1; AES256363836396535623865343163333339613833363064653364656138313534353135303764646165393765393063303065323466663330646232363065316666310a373062303133376339633831303033343135343839626136323037616366326239326530623438396136396536356433656162333133653636616639313864300a353239373433313339613465326339313035633565353464356538653631633464343835346432376638623533613666326136343332313163343639393964613265616433363430633534303935646264633034383966336232303365383763
运行
setup.sh
以安装 Ansible Automation Platform 2.2,并传递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
1.6.6. 其他清单文件变量
您可以通过在清单文件中包含额外变量来进一步配置 Red Hat Ansible Automation Platform 安装。这些配置添加了用于管理 Red Hat Ansible Automation Platform 的各种可选功能。使用文本编辑器编辑清单文件来添加这些变量。
清单文件变量的预定义值表可在 附录 A: 清单文件变量中找到