Ansible如何决定应用哪个组变量文件?

Ansible如何决定应用哪个组变量文件?,ansible,ansible-playbook,Ansible,Ansible Playbook,我试图调试ansible在运行时如何填充我的一些模板 我在组变量中有两个文件: foo/etl.yml prod/etl.yml 当针对prod库存执行剧本时,prod/etl.yml中的值应覆盖foo/etl.yml中的值。我的命令行与此类似: ansible-playbook foo.yml -i prod --tag foo-config 这将生成一个输出文件,其中仅包含来自foo/etl.yml的值,而不包含来自prod/etl.yml的值。我确信我遗漏了一些基本的东西,我正在努力学

我试图调试ansible在运行时如何填充我的一些模板

我在
组变量中有两个文件

foo/etl.yml
prod/etl.yml
当针对
prod
库存执行剧本时,
prod/etl.yml
中的值应覆盖
foo/etl.yml
中的值。我的命令行与此类似:

ansible-playbook foo.yml -i prod --tag foo-config
这将生成一个输出文件,其中仅包含来自foo/etl.yml的值,而不包含来自prod/etl.yml的值。我确信我遗漏了一些基本的东西,我正在努力学习——所以我的问题是,有没有一种方法可以追踪填充到模板中的值的来源

更新:根据要求,简化版本的
prod
库存文件:

[region1-gateways]
gw1.region1.foo.com
gw2.region1.foo.com

[region1-masters]
admin1.region1.foo.com
admin2.region1.foo.com

[region1-nodes]
node1.region1.foo.com
node2.region1.foo.com
node3.region1.foo.com

[gateways:children]
region1-gateways

[masters:children]
region1-masters

[nodes:children]
region1-nodes

[prod:children]
gateways
masters
nodes

您可以将
etl.yml
文件放在
prod
目录下的
group\u vars/
目录中

  • prod/group\u vars/etl.yml

根据您如何包含
foo/etc.yml
这应该用
prod/group_vars/etl.yml

的内容覆盖设置,您可以显示prod库存文件吗?这可能会解决示例中的问题,但我真正想问的是,通常如何让ansible显示使用/覆盖了哪些值,类似于详细的调试级别。要显示为特定主机设置了哪些变量,可以使用
ansible-m DEBUG-a“var=hostvars[''']”localhost
。。。但据我所知,无法查看该变量值的源文件/位置。