ansible.builtin.generator 清单 – 使用 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

提示

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