vars 插件
vars 会将并非来自仓库源、playbook 或命令行的一些额外变量,注入到历次 Ansible 运行。像 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 或角色中启用他,因为 play 或角色中的插件要到稍后才会加载。而如果他们仅仅是要在任务执行时运行,则对他们于何处被提供没有限制。
大多数 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 插件,咱们还可根据单个插件上,控制 vars 插件的执行。比如要在导入仓库后,运行 host_group_vars 这个插件,咱们可将以下内容添加到 ansible.cfg:
[vars_host_group_vars]
stage = inventory
插件列表
咱们可使用 ansible-doc -t vars -l 命令查看可用 vars 插件的列表。使用 ansible-doc -t vars <plugin name> 命令查看特定插件的文档与示例。
(End)