我正在尝试了解 Ansible 中的变量优先级 - 更确切地说是有关 inventory 或 playbook 中的 host_vars 和 group_vars 的部分。我的布局如下所示:
production/
├── inventory (alfa, beta and gamma hosts)
├── group_vars/
│ └── all (foo=1)
└── host_vars/
└── alfa (foo=2)
playbooks/
├── site.yml (debuging variable foo)
├── group_vars/
│ └── all (foo=10)
└── host_vars/
└── beta (foo=20)
所以我有三个节点(alfa、beta 和 gamma)和 foo 变量。当我开始游戏时,我得到了以下结果:
alfa's foo=2
beta's foo=20
gamma's foo=10
根据文档优先顺序应如下:
- 库存组变量
- 库存主机变量
- 剧本 group_vars
- 剧本 host_vars
但我的结果看起来优先顺序如下:
- 库存组变量
- 剧本 group_vars
- 库存主机变量
- 剧本 host_vars
我误解了什么吗?还是文档中有错误?我正在使用 Ansible 2.0.1。
答案1
引用@Henrik Pingel 的评论 - 因为他的评论是这个问题的正确答案:
看起来这是文档中的一个错误。有一个开放的问题为了这。 — Henrik Pingel
由于新的 ansible 2.9 版本已修复此行为,因此此做法已被弃用。