Vars 插件

Vars 插件将额外的变量数据注入到 Ansible 运行中,这些数据不是来自清单源、剧本或命令行。像 'host_vars' 和 'group_vars' 这样的剧本结构使用 Vars 插件来工作。有关 Ansible 中变量的更多详细信息,请参见 使用变量

Vars 插件在 Ansible 2.0 中部分实现,并在 Ansible 2.4 开始被完全重写。

与 Ansible 一起提供的 host_group_vars 插件允许从 将变量分配给一台机器:主机变量将变量分配给多台机器:组变量 中读取变量。

启用 Vars 插件

您可以通过将自定义 Vars 插件放入与您的剧本相邻的 vars_plugins 目录,放入角色中,或者放入 ansible.cfg 中配置的目录源之一来激活它。对于在清单构建期间运行的 Vars 插件,您不能在剧本或角色中启用它,因为它们在稍后才会加载。如果它们只会在任务执行时运行,那么在何处提供它们就没有限制。

大多数 Vars 插件默认情况下是禁用的。要启用 Vars 插件,请在 ansible.cfgdefaults 部分中设置 vars_plugins_enabled,或者将 ANSIBLE_VARS_ENABLED 环境变量设置为要执行的 Vars 插件列表。默认情况下,与 Ansible 一起提供的 host_group_vars 插件已启用。

从 Ansible 2.10 开始,您可以在集合中使用 Vars 插件。集合中的所有 Vars 插件必须显式启用,并且必须使用完全限定的集合名称,格式为 namespace.collection_name.vars_plugin_name

[defaults]
vars_plugins_enabled = host_group_vars,namespace.collection_name.vars_plugin_name

使用 Vars 插件

默认情况下,Vars 插件在启用后会根据需要自动使用。

从 Ansible 2.10 开始,Vars 插件可以设置为在特定时间运行。ansible-inventory 不使用这些设置,并且始终加载 Vars 插件。

全局设置 RUN_VARS_PLUGINS 可以通过 ansible.cfg 中的 run_vars_plugins(在 defaults 部分中)或 ANSIBLE_RUN_VARS_PLUGINS 环境变量进行设置。默认选项 demand 在任务需要变量时,会运行所有与清单源相关的已启用 Vars 插件。您可以使用选项 start,在导入该清单源后,运行所有与清单源相关的已启用 Vars 插件。

您还可以针对支持 stage 选项的 Vars 插件,在每个插件的基础上控制 Vars 插件的执行。要让 host_group_vars 插件在导入清单后运行,您可以将以下内容添加到 ansible.cfg

[vars_host_group_vars]
stage = inventory

插件列表

您可以使用 ansible-doc -t vars -l 来查看可用的 Vars 插件列表。使用 ansible-doc -t vars <plugin name> 来查看特定于插件的文档和示例。

另请参见

缓存插件

缓存插件

查找插件

查找插件

沟通

有问题吗?需要帮助吗?想分享您的想法吗?访问 Ansible 沟通指南