14.2. 构建的清单
您可以从输入清单列表中创建新清单(称为构建的清单)。
构建的清单在其输入清单中具有主机和组副本,允许作业在很多清单中到目标服务器组。可将组和 hostvars 添加到清单内容中,并且可以过滤主机来限制构建的清单的大小。
构建的清单的关键因素是:
- 普通的 Ansible hostvars 命名空间可用
- 它们提供组
构建的清单取 source_vars 和 limit 作为输入,并将其 input_inventories 转换为新清单,随组一起完成。组(现有或构建)可以在 limit 字段中引用,以减少生成的主机数量。
您可以根据以下主机属性构建组:
- RHEL 主版本或次版本
- Windows 主机
- 在特定区域中标记的基于云的实例
- 其他
后续小节中描述的示例由输入清单的结构进行组织。
14.2.1. 过滤组名称和变量 复制链接链接已复制到粘贴板!
您可以根据组和变量的组合进行过滤。例如,您可以过滤与 group 变量值匹配的主机,同时匹配主机变量值。
执行此过滤器的方法有两种:
-
定义两个组:一个组来匹配 group 变量,另一个组与主机变量值匹配。使用
限制模式返回两个组中的主机。这是推荐的方法。 -
定义一个组。在定义中,包含组和主机变量必须与特定值匹配的条件。使用
限制模式返回新组中的所有主机。
例 14.1. Example
以下清单文件定义了四个主机,并设置组和主机变量。它定义了一个产品组,一个 keeping group,它会将两个主机设置为关闭状态。
目标是创建一个仅返回关闭生产主机的过滤器。
[account_1234]
host1
host2 state=shutdown
[account_4321]
host3
host4 state=shutdown
[account_1234:vars]
account_alias=product_dev
[account_4321:vars]
account_alias=sustaining
此处的目标是仅返回与 product_dev 相等的 account_alias 变量所存在的主机。这种方法有两种,它们都以 YAML 格式显示。建议第一个建议。
构造 2 个组,限制为交集 :
source_vars:plugin: constructed strict: true groups: is_shutdown: state | default("running") == "shutdown" product_dev: account_alias == "product_dev"limit:is_shutdown:&product_dev这个构建的清单输入会为这两个类别创建一个组,
并使用限制(主机模式)来仅返回位于这两个组的交集中的主机。当变量为 或 未定义(取决于主机)时,您可以指定一个默认值。例如,如果您知道未定义值,请使用
| default ("running")。这有助于进行调试,如 调试提示 中所述。构造 1 组,限制为组 :
source_vars:plugin: constructed strict: true groups: shutdown_in_product_dev: state | default("running") == "shutdown" and account_alias == "product_dev"limit:shutdown_in_product_dev此输入会创建一个组,它只包含匹配这两个条件的主机。然后,限制本身只是组名称,返回 host2。与之前的方法相同。