以下是问题的一个示例:
广告资源文件:
[group1] www.example1.com
[group2] www.example1.com
group_vars文件:
group_vars/group1:
a_var: aaa
group_vars/group2:
a_var: bbb
如果我们运行这个剧本:
- name: ...
hosts: group1
roles:
- ...
如果我们要部署到同一台服务器,group_vars / group1和group_vars / group2中的变量会互相覆盖。
预期结果: a_var = AAA
实际结果: a_vars = BBB
似乎vars被解析并附加到主机而不是留在组中(因此即使你没有使用该组,group_vars也会合并,最后一组合并获胜!!!!)。这是正常的行为吗?
答案 0 :(得分:3)
作为一种解决方法,您可以为每个组选择一个不同的名称,并为每个具有真实主机名/ IP的var ansible_host设置。示例:
[group1]
example1-group1 ansible_host=192.168.0.10
[group2]
example1-group2 ansible_host=192.168.0.10
在这种情况下,Ansible认为您有两个不同的主机,分别具有专用的hostvar和groupvar,但是以相同的方式到达它们。
答案 1 :(得分:0)
这是正常行为吗?
是的,如果主持人属于多个群组,则只会尊重来自一个群组(后者)的变数。
来自docs:
可以将系统放在多个组中,例如,服务器既可以是Web服务器,也可以是dbserver。如果这样做,请注意变量将来自它们所属的所有组,变量优先级将在后面的章节中详细说明。