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 插件。 为了让 vars 插件在清单构建期间运行,您不能在 play 或角色中启用它,因为这些插件要到稍后才会加载。 如果它们仅在任务执行时运行,则对其提供的位置没有限制。
大多数 vars 插件默认情况下处于禁用状态。要启用 vars 插件,请在 ansible.cfg 的 defaults
部分中设置 vars_plugins_enabled
,或将 ANSIBLE_VARS_ENABLED
环境变量设置为要执行的 vars 插件列表。默认情况下,Ansible 附带的 host_group_vars 插件已启用。
从 Ansible 2.10 开始,您可以在集合中使用 vars 插件。集合中的所有 vars 插件都必须显式启用,并且必须使用 命名空间.集合名称.vars_插件名称
格式的完全限定集合名称。
[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 插件,基于每个插件控制 vars 插件的执行。要在导入清单后运行 host_group_vars 插件,您可以将以下内容添加到 ansible.cfg 中
[vars_host_group_vars]
stage = inventory
插件列表
您可以使用 ansible-doc -t vars -l
查看可用的 vars 插件列表。使用 ansible-doc -t vars <插件名称>
查看特定于插件的文档和示例。