14.2. 构建的清单


您可以从输入清单列表中创建新清单(称为构建的清单)。

构建的清单在其输入清单中具有主机和组副本,允许作业在很多清单中到目标服务器组。可将组和 hostvars 添加到清单内容中,并且可以过滤主机来限制构建的清单的大小。

构建的清单的关键因素是:

  • 普通的 Ansible hostvars 命名空间可用
  • 它们提供组

构建的清单取 source_varslimit 作为输入,并将其 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 格式显示。建议第一个建议。

  1. 构造 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")。这有助于进行调试,如 调试提示 中所述。

  2. 构造 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。与之前的方法相同。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部