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 主机/测试服务器