我正在尝试设置一个(希望)简单的 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