ansible host_vars如何工作?

mja*_*day 28 ansible ansible-playbook

创建了一个repo来重现我的场景.

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

我不是100%清楚主机变量如何与主机匹配.我阅读了ansible repo的例子,但似乎无法按照文档记录工作,所以我正在寻找对我们设置的一些审查.

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

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

jar*_*arv 35

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

  1. 在命令行上设置的变量-e foo = set_on_cmd_line
  2. vars_files中设置的Vars:在游戏中阻止
  3. vars中设置的Vars :在游戏中阻止
  4. host_vars /中设置的变量
  5. group_vars /中设置的变量
  6. 角色默认变量角色/.../defaults/main.yml

你应该认为host_vars和group_vars更像是默认值而不是默认值的覆盖.如果您有相同的变种集你vars_files:就像你在你的例子做它将优先.

  • 路径与您运行ansible-playbook的位置有关 (3认同)