ansible.builtin.include_vars 模块 - 在任务中动态加载来自文件中的变量
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使没有指定 collections 关键字,您也可以使用简短模块名称 include_vars
。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.include_vars
以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合发生冲突。
概要
在任务运行时,从文件或目录(递归地)动态加载 YAML/JSON 变量。
如果加载目录,则在加载文件之前,文件将按字母顺序排序。
此模块也支持 Windows 目标。
要将包含的变量分配给与
inventory_hostname
不同的主机,请使用delegate_to
并设置delegate_facts=yes
。
注意
此模块具有相应的 操作插件。
参数
参数 |
注释 |
---|---|
当使用 默认值: |
|
应加载变量的目录名称。 如果路径是相对路径,并且任务位于角色内,则它将在角色的 如果路径是相对路径,并且不在角色内,则它将相对于剧本解析。 |
|
使用 默认值: |
|
应加载变量的文件名。 如果路径是相对路径,则它将在角色的 |
|
将加载的任何目录中的文件限制为此正则表达式。 |
|
此模块允许您直接指定 没有 |
|
如果设置为 如果省略( 此选项是自包含的,不适用于 选择
|
|
要忽略的文件名列表。 |
|
忽略目录中的未知文件扩展名。 这允许用户指定包含 vars 文件的目录,这些文件与非 vars 文件扩展名类型混合在一起(例如,包含 README 和 vars 文件的目录)。 选择
|
|
要将包含的 vars 分配到的变量的名称。 如果省略( |
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 部分 虽然操作插件确实做了一些工作,但它依赖于核心引擎来实际创建变量,这部分无法被覆盖 |
指示它具有相应的操作插件,因此某些选项部分可以在控制器上执行 |
|
支持: 无 |
支持与 |
|
支持: 无 |
可与 become 关键字一起使用 |
|
支持: 无 |
强制执行一个“全局”任务,该任务不会针对每个主机执行,这将绕过每个主机模板、串行、节流以及其他循环考虑因素 条件将按 此操作在非锁步策略之外将无法正常工作 |
|
支持: 无 |
这些任务会忽略 |
|
支持: 全部 |
可以在 check_mode 中运行并返回更改状态预测,而不会修改目标,如果不受支持,则操作将被跳过。 |
|
支持: 无 |
使用目标的配置连接信息在其上执行代码 |
|
支持: 部分 虽然此操作的部分在核心内实现,但其他部分仍然可用作普通的插件,并且可以部分覆盖 |
这是一个“核心引擎”功能,与大多数任务操作的实现方式不同,因此无法通过插件系统以任何方式覆盖它。 |
|
支持: 部分 虽然变量赋值可以委托给不同的主机,但执行上下文始终是当前的 inventory_hostname 连接变量(如果设置)将反映它将针对的主机,即使在这种情况下我们根本没有连接 |
可与 delegate_to 和相关关键字一起使用 |
|
支持: 无 |
将在差异模式下返回有关更改内容(或可能在 check_mode 中需要更改的内容)的详细信息 |
|
支持: 无 |
操作不受条件执行的影响,因此它将忽略 |
|
平台: 全部 |
可以针对其操作的目标操作系统/系列 |
|
支持: 全部 |
允许使用“标签”关键字来控制选择此操作以执行 |
|
支持: 全部 |
表示此操作是否服从 until/retry/poll 关键字 |
另请参见
另请参见
- ansible.builtin.set_fact
设置主机变量和事实。
- 控制任务运行的位置:委托和本地操作
与任务委托相关的更多信息。
示例
- name: Include vars of stuff.yaml into the 'stuff' variable (2.2).
ansible.builtin.include_vars:
file: stuff.yaml
name: stuff
- name: Conditionally decide to load in variables into 'plans' when x is 0, otherwise do not. (2.2)
ansible.builtin.include_vars:
file: contingency_plan.yaml
name: plans
when: x == 0
- name: Load a variable file based on the OS type, or a default if not found. Using free-form to specify the file.
ansible.builtin.include_vars: "{{ lookup('ansible.builtin.first_found', params) }}"
vars:
params:
files:
- '{{ansible_distribution}}.yaml'
- '{{ansible_os_family}}.yaml'
- default.yaml
paths:
- 'vars'
- name: Bare include (free-form)
ansible.builtin.include_vars: myvars.yaml
- name: Include all .json and .jsn files in vars/all and all nested directories (2.3)
ansible.builtin.include_vars:
dir: vars/all
extensions:
- 'json'
- 'jsn'
- name: Include all default extension files in vars/all and all nested directories and save the output in test. (2.2)
ansible.builtin.include_vars:
dir: vars/all
name: test
- name: Include default extension files in vars/services (2.2)
ansible.builtin.include_vars:
dir: vars/services
depth: 1
- name: Include only files matching bastion.yaml (2.2)
ansible.builtin.include_vars:
dir: vars
files_matching: bastion.yaml
- name: Include all .yaml files except bastion.yaml (2.3)
ansible.builtin.include_vars:
dir: vars
ignore_files:
- 'bastion.yaml'
extensions:
- 'yaml'
- name: Ignore warnings raised for files with unknown extensions while loading (2.7)
ansible.builtin.include_vars:
dir: vars
ignore_unknown_extensions: True
extensions:
- ''
- 'yaml'
- 'yml'
- 'json'
返回值
常见返回值已记录在 此处,以下是此模块独有的字段
关键 |
描述 |
---|---|
成功包含的文件列表 已返回:成功 示例: |