>ls 主机/

>ls 主机/

Unix:服务器1:

我的 var 主机结构如下:

>ls 主机/

测试服务器
uat_服务器

>更多测试服务器

服务器1
服务器2
服务器3

>ls 主机变量/

服务器1.yml
服务器2.yml
服务器3.yml

>更多服务器1.yml

环境:[
{ 类型:“ dev”,
列表变量:[
{ 参数:“ AMD” },
{ 参数:“ INTEL”, 参数2:“ 2”}
]
},
{ 类型:“ uat”,
列表变量:[
{ 参数:“ AMD” },
{ 参数:“ INTEL”, 参数2:“ 3”}
]
}
]


模板:

更多测试.j2

{% 组中的主机['test_servers'] %}

“{{ 主持人 }} ”

{% for env in envs %}
{% for par in env.list_vars %}
别名 {{ env.type }}/{{ par.type }}/ "www"
{% endfor %}
{% endfor %}
{% endfor %}

结果:

我对不同的服务器始终使用相同的变量,并且始终是 server1,但 {{ host }} 返回 server1、server2、server3。

如果我想使用这样的结构,如何获取server2,server3的参数?

答案1

>更多测试服务器

[unix]
服务器1
服务器2
服务器3

>更多测试.j2

{% for host in groups['unix'] %}
{% for env in hostvars[host]['envs'] %}
{% for par in env.list_vars %}
别名 {{ env.type }}/{{ par.type }}/ "www"
{% endfor %}
{% endfor %}
{% endfor %}

ansible-playbook main.yml -i 主机/测试服务器

相关内容