在Ansible 2.2上,
我有一个Ansible主机文件:
[webserver] aegir.dev [hostmaster] aegir.dev
我有两个group_vars/文件:
# group_vars/webserver.yml my_var: - vagrant
和
# group_vars/hostmaster.yml my_var: - vagrant - aegir
和剧本:
- hosts: webserver tasks: - debug: var=my_var - hosts: hostmaster tasks: - debug: var=my_var
输出:
PLAY [webserver] *************************************************************** TASK [setup] ******************************************************************* ok: [aegir.dev] TASK [debug] ******************************************************************* ok: [aegir.dev] => { "my_var": [ "vagrant", "aegir" ] } PLAY [hostmaster] ************************************************************** TASK [setup] ******************************************************************* ok: [aegir.dev] TASK [debug] ******************************************************************* ok: [aegir.dev] => { "my_var": [ "vagrant", "aegir" ] }
为什么webserver和hostmaster使用hostmaster的variables?
可能我没有正确使用group_vars ,但我该如何解决这个问题?
编辑
真实的情况是,我有两个组在同一个angular色上运行,一个是实际包含4个通用服务器的webserver ,另一个是在同一个angular色上是webserver服务器+额外configuration的hostmaster组(用户aegir只存在于aegir.dev而不是其他3台networking服务器)
这是预期的行为。 请参阅文档 :
在任何部分中,重新定义一个var将覆盖以前的实例。 如果多个组有相同的variables,最后一个加载胜利。 如果你在一个游戏的变数部分中定义一个variables两次,那么第二个variables将会赢。