搜索

1.6. 关于安装程序清单文件

download PDF

Red Hat Ansible Automation Platform 使用清单文件,根据您以逻辑方式组织的基础架构中的受管节点或主机列表进行工作。您可以使用 Red Hat Ansible Automation Platform 安装程序清单文件指定您的安装场景,并描述 Ansible 的主机部署。通过使用清单文件,Ansible 可以通过一个命令管理大量主机。清单还可以通过减少您指定的命令行选项数目来更有效地使用 Ansible。

根据您拥有的清单插件,清单文件可以采用多种格式。最常见的格式是 INIYAML。本文档中列出的清单文件以 INI 格式显示。

清单文件的位置取决于您使用的安装程序。下表显示了可能的位置:

安装程序位置

捆绑包 tar

/ansible-automation-platform-setup-bundle-<latest-version>

非捆绑包 tar

/ansible-automation-platform-setup-<latest-version>

RPM

/opt/ansible-automation-platform/installer

您可以使用以下命令验证清单中的主机:

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] 所有节点和实例,且实例必须能够使用这个主机名或地址访问任何其他节点。您不能在其中一个节点上使用 localhost ansible_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 加密单独的变量,或者加密包含变量的文件。

流程

  1. 创建一个标记为 credentials.yml 的文件来存储加密的凭证。

    $ cat credentials.yml
    
    admin_password: my_long_admin_pw
    pg_password: my_long_pg_pw
    registry_password: my_long_registry_pw
  2. 使用 ansible-vault 加密 credentials.yml 文件。

    $ ansible-vault encrypt credentials.yml
    New Vault password:
    Confirm New Vault password:
    Encryption successful
    重要

    将加密的 vault 密码存储在安全的地方。

  3. 验证 credentials.yml 文件是否加密。

    $ cat credentials.yml
    $ANSIBLE_VAULT;1.1;
    AES256363836396535623865343163333339613833363064653364656138313534353135303764646165393765393063303065323466663330646232363065316666310a373062303133376339633831303033343135343839626136323037616366326239326530623438396136396536356433656162333133653636616639313864300a353239373433313339613465326339313035633565353464356538653631633464343835346432376638623533613666326136343332313163343639393964613265616433363430633534303935646264633034383966336232303365383763
  4. 运行 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: 清单文件变量中找到

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.