Ansible:使用组的组限制组变量

Ansible:使用组的组限制组变量,ansible,ansible-2.x,ansible-inventory,Ansible,Ansible 2.x,Ansible Inventory,我有一个ansible hosts文件,如下所示: [myhosts] 192.168.0.1 192.168.0.2 [group1:children] myhosts [group2:children] myhosts 另外还有用于group1和group2的组变量文件(顺便提一下,对于myhosts),它们声明了一些常用变量,但值不同 以下是我的目录布局(如下所示): 因此,当主机同时属于两个组时,ansible会自动包含group1和group2的组变量文件 作为记录,我在play

我有一个ansible hosts文件,如下所示:

[myhosts]
192.168.0.1
192.168.0.2

[group1:children]
myhosts

[group2:children]
myhosts
另外还有用于group1group2的组变量文件(顺便提一下,对于myhosts),它们声明了一些常用变量,但值不同

以下是我的目录布局(如下所示):

因此,当主机同时属于两个组时,ansible会自动包含group1group2的组变量文件

作为记录,我在playblook上调用ansible,目标为以下内容(在命令行中指定):

考虑到这一点,我如何使ansible只包含与group1(和children groupmyhosts)关联的组变量文件?可能吗

另一种解决方案是将group1group2的组vars文件重命名为不同的文件(以防止自动包含),并将这些文件包含在单独的“代理”剧本中,具体到每个子组,但这对我来说似乎不太干净


注意:目前情况并非如此,但在未来,group1和group2可能会有几个不相同的主机

一部剧的
主机
值是设置该剧目标主机的一种方式,但它不是这些主机上的视图。

如果主机属于多个组,它将始终从所有这些组的
组中加载变量,而不仅仅是在游戏中指定的组。

好的,所以我需要按照我在问题中写的做?i、 e.有两个剧本,每个剧本都包括/定义我想要的剧本的具体变量,我没有真正的解决方案。您必须重新组织您的组,以便主机不属于两个组,并且同一个变量的值不同。
hosts
main.yml
group_vars/
    group1.yml
    group2.yml
    myhosts.yml
192.168.0.1:&group1