我在environment / staging / group_vars中创建了两个文件夹,即
all / main.yml
服务/ main.yml
当我按以下方式执行我的剧本时
ansible-playbook -i environments/staging myplaybook.yml
group_vars / all / main.yml下定义的变量正被myplaybook选中,但它没有获取服务变量。
这里有指针吗?
答案 0 :(得分:1)
正如您在评论中所说,您的广告资源中未定义论坛services
。
group_vars
文件夹中的每个子文件夹都对应于群组名称,而对应于特殊群组all
。
因此对于库存文件:
[group1]
host1
[group2]
host2
group_vars
可能如下所示:
./group_vars/all/common.yml
./group_vars/group1/gr1_specific.yml
./group_vars/group2/gr2_specific.yml
因此host1
将来自common.yml
和gr1_specific.yml
,host2
- common.yml
和gr2_specific.yml
。
答案 1 :(得分:1)
如果要将全局可访问的变量分隔到不同的文件(可能为了可读性),可以使用不同的名称将它们存储在group_vars / all目录中,例如:
group_vars/
all/
services.yml
something_else.yml
答案 2 :(得分:0)
我可以使用children
拥有特定于环境的变量,如下所示:
playbook.yml
hosts: webservers
主机/开发
[webservers]
IP_ADDRESS1
...
[development:children]
webservers
group_vars / development
var1: value1
var2: value2
...
用法
ansible-playbook playbook.yml -i hosts/development ...etc