ansible host_vars如何工作?

时间:2014-10-29 21:34:31

标签: ansible ansible-playbook

created a repo重现我的情景。

基本上我们正在为我们的主机加载库存,我们可以通过库存覆盖每个主机的值而不会出现问题,但是想尝试使用host_vars。

我不是100%清楚主机变量如何与主机匹配。我阅读了ansible repo的示例,但似乎无法将其记录下来,因此我正在寻找对我们设置的一些审查。

当我在我的示例仓库中运行命令ansible-playbook -i ansible.inventory site.yml -clocal时,我希望读取host_vars/{{ ansible_hostname }}文件并覆盖变量中设置的任何内容,但这似乎不会发生。

有人可以指点我一个工作的例子,这样我就可以看到我们哪里出错了吗?

1 个答案:

答案 0 :(得分:32)

由于文档对此主题不是非常具体,因此这是当前版本的Ansible中vars的优先顺序:

  1. 在命令行上设置的变量 -e foo = set_on_cmd_line
  2. 在游戏
  3. 中的 vars_files:块中设置的Vars
  4. 在游戏
  5. 中的 vars:块中设置的Vars
  6. host_vars /
  7. 中设置的Vars
  8. group_vars /
  9. 中设置的Vars
  10. 角色默认值角色/.../ defaults / main.yml
  11. 在这里,您可以在ansible docs中看到从最小到最大的优先级顺序(最后列出的优先级排序变量)。

    您应该将host_vars和group_vars视为默认值而不是默认值的覆盖。如果您在 vars_files:like you do in your example中具有相同的var集,则它将优先。