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.cfg 的 defaults
部分设置 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 插件。
对于支持 stage
选项的 vars 插件,你还可以控制每个插件的执行。若要在导入清单后运行 host_group_vars 插件,可以将以下内容添加到 ansible.cfg
[vars_host_group_vars]
stage = inventory
插件列表
可以使用 ansible-doc -t vars -l
查看可用的 vars 插件列表。使用 ansible-doc -t vars <plugin name>
查看特定于插件的文档和示例。