Ansible group_vars 对非组成员可见

Ansible group_vars 对非组成员可见

我正在使用 Ansible 2.0.0.2

我有这样的库存文件:

[webproxy]
testserver

[database]
testserver

[application]
testserver

[testing:children]
webproxy
database

我按照这样的剧本来运行角色:

---
- hosts: application

  become: true

  roles:
    - application

我在 中定义了用于测试环境的变量group_vars/testing。我有角色webproxydatabaseapplication

由于application组不包含在testing组中,我预计运行角色application会失败,因为我只为测试组定义了必需的变量。实际上,运行application.yaml成功,它能够使用中定义的变量group_vars/testing。这是正确的行为吗?

testing组似乎至少有一些影响,因为如果我将其从库存文件中完全删除,则运行应用程序角色会因为未定义的变量而失败,正如预期的那样。

应该group_vars这样工作吗?这可能是由于我在同一台主机上安装角色造成的吗?(我现在无法访问多台机器,因此无法测试每个角色都有自己的机器。)

我一直在阅读 Ansible 文档,例如组变量 doc但还没有找到答案。

答案1

应该group_vars这样工作吗?

是的。

这可能是因为我在同一台主机上安装了角色造成的吗?

是的。事实与主机有关,与群组无关。

这也意味着在多个 group_vars 中定义的相同变量值将被覆盖。

相关内容