Ansible在部署到不同组

时间:2016-08-31 14:46:02

标签: ansible

以下是问题的一个示例:

广告资源文件:

[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也会合并,最后一组合并获胜!!!!)。这是正常的行为吗?

2 个答案:

答案 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。如果这样做,请注意变量将来自它们所属的所有组,变量优先级将在后面的章节中详细说明。