我正在使用 Ansible 2.0.0.2
。
我有这样的库存文件:
[webproxy]
testserver
[database]
testserver
[application]
testserver
[testing:children]
webproxy
database
我按照这样的剧本来运行角色:
---
- hosts: application
become: true
roles:
- application
我在 中定义了用于测试环境的变量group_vars/testing
。我有角色webproxy
、database
和application
。
由于application
组不包含在testing
组中,我预计运行角色application
会失败,因为我只为测试组定义了必需的变量。实际上,运行application.yaml
成功,它能够使用中定义的变量group_vars/testing
。这是正确的行为吗?
该testing
组似乎至少有一些影响,因为如果我将其从库存文件中完全删除,则运行应用程序角色会因为未定义的变量而失败,正如预期的那样。
应该group_vars
这样工作吗?这可能是由于我在同一台主机上安装角色造成的吗?(我现在无法访问多台机器,因此无法测试每个角色都有自己的机器。)
我一直在阅读 Ansible 文档,例如组变量 doc但还没有找到答案。
答案1
应该
group_vars
这样工作吗?
是的。
这可能是因为我在同一台主机上安装了角色造成的吗?
是的。事实与主机有关,与群组无关。
这也意味着在多个 group_vars 中定义的相同变量值将被覆盖。