当主机组重叠时如何将变量应用于主机组

当主机组重叠时如何将变量应用于主机组

我正在尝试设置一个(希望)简单的 Ansible 脚本来检出 git 分支。有三个环境:dev、qa 和 live。每个环境跨越两个主机。但 dev 和 qa 使用相同的主机,只是使用不同的目录。

我想要一个类似这样的库存文件:

[dev]
internal1.example.com
internal2.example.com

[dev:vars]
dir = /opt/dev

[qa]
internal1.example.com
internal2.example.com

[qa:vars]
dir = /opt/qa

[live]
live1.example.com
live2.example.com

[live:vars]
dir = /opt/live

但这不起作用。变量值取自它们所属的所有组。因此,无论我尝试部署哪一个,internal1.example.com 都会从 dev 和 qa 中获取 dir 值。

如何根据我的目标组分配适用于主机的变量?

我正在使用 Ansible 版本 1.5.4。

答案1

https://ansible-tips-and-tricks.readthedocs.io/en/latest/ansible/inventory/

您可以将组特定变量与位于 [ansible_base_dir]/group_vars/[group-name] 中的文件一起使用

因此您将获得以下文件:

[ansible_base_dir]/group_vars/dev

---
dir: /opt/dev

[ansible_base_dir]/group_vars/qa

---
dir: /opt/qa

[ansible_base_dir]/group_vars/live

---
dir: /opt/live

相关内容