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 键中的变量名称。每个层值都是该层可能值的列表。

插件

字符串 / 必需

确保这是“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

提示

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