ansible host_vars如何工作?

问题描述 投票:24回答:1

created a repo重现我的情景。

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

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

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

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

ansible ansible-playbook
1个回答
32
投票

由于文档对此主题不是非常具体,因此这是当前版本的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

在这里,您可以在ansible docs中看到从最小到最大的优先级顺序(最后列出的优先级排序变量)。

你应该认为host_vars和group_vars更像是默认值而不是默认值的覆盖。如果你在vars_files中有相同的var set:block like you do in your example它将优先。

© www.soinside.com 2019 - 2024. All rights reserved.