Ansible全局group_vars/all.yml优先级不符合预期,inventory级组变量无法覆盖全局变量的问题求助
Ansible全局group_vars/all.yml优先级不符合预期,inventory级组变量无法覆盖全局变量的问题求助
大家好,我在Mac(M1芯片)上用Homebrew安装的Python 3.12.4搭配Ansible 2.16.8,最近遇到一个变量优先级的问题,折腾了好久都没搞明白,来求助各位!
我的需求是:设置一个全局的group_vars/all.yml作为默认变量值,当需要的时候,用对应inventory目录下的inventory/x/group_vars/all.yml里的变量去覆盖全局默认值。但实际测试下来,全局的变量反而覆盖了inventory级的特定值,完全和预期相反。
下面是我的配置文件和测试过程:
配置文件
全局group_vars/all.yml
# group_vars/all.yml level: global all
inventory/x/group_vars/all.yml
# inventory/x/group_vars/all.yml level: inventory all
inventory/x/group_vars/test.yml
# inventory/x/group_vars/test.yml level: inventory group
执行命令
我运行了这条debug命令来查看变量值:
ansible all -i inventory/x -m debug -a "var=level" -o
实际输出
test-host | SUCCESS => { "changed": false, "level": "inventory group" } non-test-host | SUCCESS => { "changed": false, "level": "global all" }
预期结果
我本来以为non-test-host应该读取inventory/x/group_vars/all.yml里的inventory all,但实际它用的是全局的global all,这明显不符合预期。有没有大佬能帮我看看哪里配置错了?
备注:内容来源于stack exchange,提问作者Panduar
相关产品推荐
相关产品推荐

