Vars 插件

Vars 插件将额外的变量数据注入 Ansible 运行中,这些数据并非来自清单源、Playbook 或命令行。像“host_vars”和“group_vars”这样的 Playbook 结构使用 vars 插件工作。有关 Ansible 中变量的更多详细信息,请参阅使用变量

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

Ansible 自带的host_group_vars 插件可以从为一台机器分配变量:主机变量为多台机器分配变量:组变量中读取变量。

启用 vars 插件

您可以通过将自定义 vars 插件放入与您的 play 相邻的 vars_plugins 目录中、角色内部,或者将其放入ansible.cfg中配置的目录源之一中来激活它。为了使 vars 插件在清单构建期间运行,您不能在 play 或角色中启用它,因为它们要到稍后才会被加载。如果它们仅在任务执行时运行,则对其提供的位置没有限制。

大多数 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 中使用 defaults 部分中的 run_vars_plugins 设置,或者通过 ANSIBLE_RUN_VARS_PLUGINS 环境变量设置。默认选项 demand 在任务需要变量时,运行任何相对于清单源启用的 vars 插件。您可以使用选项 start 在导入该清单源后运行任何相对于清单源启用的 vars 插件。

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

[vars_host_group_vars]
stage = inventory

插件列表

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

另请参阅

Cache 插件

Cache 插件

Lookup 插件

Lookup 插件

交流

有问题吗?需要帮助吗?想分享您的想法吗?请访问 Ansible 交流指南