ansible.builtin.generator 清单 - 使用 Jinja2 从模式构建主机和组

注意

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

概要

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

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

  • 每个层的所有元素组合在一起,为每个层组合创建一个主机

  • 可以使用相同的模板变量引用主机和其他组来定义父组

参数

参数

注释

hosts

字符串

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

parents 是主机所属的父组列表。每个 parent 项都包含一个 name 键,再次从模板展开,以及一个可选的 parents 键,其中列出了其父项。

父项还可以包含 vars,这是一个变量字典,始终为该变量设置。这可以方便地访问组名。例如,设置一个 application 变量,该变量设置为 application 层名称的值。

layers

字符串

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

plugin

字符串 / 必需

确保这是“generator”插件的源文件的令牌。

选择

  • "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

提示

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