【问题标题】:How does Ansible decide which group_vars files to apply?Ansible 如何决定应用哪些 group_vars 文件?
【发布时间】:2016-10-28 19:13:33
【问题描述】:

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

我在group_vars 中有两个文件:

foo/etl.yml
prod/etl.yml

当针对 prod 库存执行 playbook 时,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

【问题讨论】:

  • 你能显示产品库存文件吗?

标签: ansible ansible-playbook


【解决方案1】:

您可以将etl.yml 文件放在group_vars/ 目录下的prod 库存目录下。

  • prod/group_vars/etl.yml

根据您包含foo/etc.yml 的方式,这应该使用prod/group_vars/etl.yml 的内容覆盖设置。

【讨论】:

  • 这可能会解决示例中的问题,但我真正要问的是,一般来说,如何获取 ansible 以显示使用/覆盖的值等。类似于 DEBUG 级别的冗长。
  • 要显示为某个主机设置了哪些变量,您可以使用ansible -m debug -a "var=hostvars['<hostname>']" localhost ...但据我所知,无法查看该变量值的来源是哪个文件/位置.
猜你喜欢
  • 2021-12-01
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多