这是问题的示例:
库存文件:
[group1] www.example1.com
[group2] www.example1.com
Run Code Online (Sandbox Code Playgroud)
group_vars文件:
group_vars/group1:
a_var: aaa
group_vars/group2:
a_var: bbb
Run Code Online (Sandbox Code Playgroud)
如果我们运行此剧本:
- name: ...
hosts: group1
roles:
- ...
Run Code Online (Sandbox Code Playgroud)
如果我们要部署到同一服务器上,则group_vars / group1和group_vars / group2中的变量会相互覆盖。
预期结果: a_var = aaa
实际结果: a_vars = bbb
似乎vars被解析并附加到主机上,而不是与该组呆在一起(因此,即使您不使用该组,group_vars也将合并,并且最后一个组合并会成功!!!!)。这是正常行为吗?
小智 6
解决方法是,可以为每个组选择一个不同的名称,并为每个具有真实主机名/ IP的var ansible_host设置。例:
[group1]
example1-group1 ansible_host=192.168.0.10
[group2]
example1-group2 ansible_host=192.168.0.10
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Ansible认为您有两个不同的主机,分别具有专用的hostvar和groupvar,但是以相同的方式到达它们。