Ansible如何决定应用哪个组变量文件?
我试图调试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的值。我确信我遗漏了一些基本的东西,我正在努力学
组变量中有两个文件
:
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
。。。但据我所知,无法查看该变量值的源文件/位置。