ansible.builtin.generator inventory – 使用 Jinja2 从模式构建主机和组

注意

此清单插件是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,您可以使用简短的插件名称 generator。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.generator,以便轻松链接到插件文档并避免与可能具有相同清单插件名称的其他集合发生冲突。

概要

  • 使用带有有效 YAML 或 .config 扩展名的 YAML 配置文件来定义变量表达式和组条件。

  • 创建一个模板模式来描述每个主机,然后使用独立的配置层。

  • 每层中的每个元素都组合在一起,为每个层组合创建一个主机。

  • 可以使用与同一模板变量相同的引用来定义父组,其中包含对主机和其他组的引用。

参数

参数

注释

主机

字符串

name 键是用于根据 layers 选项生成主机名的模板。名称中的每个变量都扩展为创建所有可能的层组合的笛卡尔积。

parents 是主机所属的父组列表。每个 parent 项目都包含一个 name 键,同样从模板中扩展而来,以及一个可选的 parents 键,该键列出了它的父级。

父级还可以包含 vars,这是一个变量字典,然后始终为该变量设置。这可以提供对组名的轻松访问。例如,设置一个 application 变量,该变量的值设置为 application 层的名称。

字符串

层字典,键是层名称,用作 host nameparents 键中的变量名。每个层值都是该层可能值的列表。

插件

字符串 / 必需

确保这是“生成器”插件的源文件的标记。

选项

  • "ansible.builtin.generator"

  • "generator"

示例

# inventory.config file in YAML format
# remember to enable this inventory plugin in the ansible.cfg before using
# View the output using `ansible-inventory -i inventory.config --list`
plugin: ansible.builtin.generator
hosts:
    name: "{{ operation }}_{{ application }}_{{ environment }}_runner"
    parents:
      - name: "{{ operation }}_{{ application }}_{{ environment }}"
        parents:
          - name: "{{ operation }}_{{ application }}"
            parents:
              - name: "{{ operation }}"
              - name: "{{ application }}"
          - name: "{{ application }}_{{ environment }}"
            parents:
              - name: "{{ application }}"
                vars:
                  application: "{{ application }}"
              - name: "{{ environment }}"
                vars:
                  environment: "{{ environment }}"
      - name: runner
layers:
    operation:
        - build
        - launch
    environment:
        - dev
        - test
        - prod
    application:
        - web
        - api

提示

每种条目类型的配置条目按从低到高的优先级排序。例如,列表中较低的变量将覆盖列表中较高的变量。