Ansible没有从group_vars中获取变量

时间:2017-07-31 16:00:19

标签: ansible

我在environment / staging / group_vars中创建了两个文件夹,即

  1. all / main.yml

  2. 服务/ main.yml

  3. 当我按以下方式执行我的剧本时

    ansible-playbook -i environments/staging myplaybook.yml

    group_vars / all / main.yml下定义的变量正被myplaybook选中,但它没有获取服务变量。

    这里有指针吗?

3 个答案:

答案 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.ymlgr1_specific.ymlhost2 - common.ymlgr2_specific.yml

答案 1 :(得分:1)

如果要将全局可访问的变量分隔到不同的文件(可能为了可读性),可以使用不同的名称将它们存储在group_vars / all目录中,例如: group_vars/ all/ services.yml something_else.yml

请参阅官方文档:http://docs.ansible.com/ansible/latest/intro_inventory.html#splitting-out-host-and-group-specific-data

答案 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