ansible主机是如何工作的?

ansible主机是如何工作的?,ansible,ansible-playbook,Ansible,Ansible Playbook,我想要重现我的情景 本质上,我们正在用主机加载一个清单,我们可以通过清单覆盖每个主机的值,而不会出现问题,但希望尝试使用主机变量 我不是100%清楚主机变量如何与主机匹配。我阅读了示例,但似乎无法使其按文档所述工作,因此我希望对我们的设置进行一些详细检查 在我的示例repo中,当我运行命令ansible playbook-I ansible.inventory site.yml-clocal时,我希望读取host\u vars/{{ansible\u hostname}文件并覆盖vars中设置的

我想要重现我的情景

本质上,我们正在用主机加载一个清单,我们可以通过清单覆盖每个主机的值,而不会出现问题,但希望尝试使用主机变量

我不是100%清楚主机变量如何与主机匹配。我阅读了示例,但似乎无法使其按文档所述工作,因此我希望对我们的设置进行一些详细检查

在我的示例repo中,当我运行命令
ansible playbook-I ansible.inventory site.yml-clocal
时,我希望读取
host\u vars/{{ansible\u hostname}
文件并覆盖vars中设置的任何内容,但这似乎没有发生


有人能给我举一个工作示例,让我看看我们哪里出了问题吗?

因为文档对此主题不是很具体,这里是当前版本Ansible中变量的优先顺序:

  • 在命令行上设置变量-e foo=set_on_cmd_行
  • Vars_文件中设置的变量:在播放中阻止
  • Vars中设置的Vars:游戏中的block
  • 主机变量中设置的变量/
  • 组中设置的变量/
  • 角色默认值vars roles/../defaults/main.yml
  • 在这里,您可以在中看到从最小到最大的优先顺序(最后列出的赢得优先级的变量)。


    您应该认为主机变量和组变量更像是默认值,而不是默认值的覆盖。如果在vars_文件中设置了相同的var:block,它将优先。

    列出的路径是相对的,那么它们相对于什么?你在哪里经营ansible剧本?或者别的什么?路径与运行ansible Playbook的位置有关注意,对于库存变量(例如,
    host\u vars
    group\u vars
    ,您还可以拥有相对于清单文件本身的路径。例如,如果您的清单位于
    config/inventory
    中,那么您可以将host\u vars文件放入
    config/host\u vars/[hostname here]
    。默认值的最佳做法是什么,因为显然主机变量被变量文件覆盖:(