Ansible group_varsvariables优先级(group_vars覆盖其他group_vars)

在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将会赢。