Loops ansible play_主机模板循环
我试图在ansible模板中使用Loops ansible play_主机模板循环,loops,ansible,jinja2,ansible-2.x,Loops,Ansible,Jinja2,Ansible 2.x,我试图在ansible模板中使用play\u hosts变量 我正在尝试为wildfly设置主/从域设置 因此,我希望循环清单组中的所有主机,而不必指定组 这就是我正在尝试的: {%- for host in play_hosts %} {%- if 'master' in hostvars[host][ansible_hostname + '_alias'] %} <remote protocol="remote" host="{{ hostvars[host]['ansible_
play\u hosts
变量
我正在尝试为wildfly设置主/从域设置
因此,我希望循环清单组中的所有主机,而不必指定组
这就是我正在尝试的:
{%- for host in play_hosts %}
{%- if 'master' in hostvars[host][ansible_hostname + '_alias'] %}
<remote protocol="remote" host="{{ hostvars[host]['ansible_default_ipv4']['address'] }}" port="9999" />
{%- endif %}
{%- endfor %}
剧本:
---
# http://stackoverflow.com/questions/39005760/ansible-play-hosts-template-loop
- name: so question 39005760 version 2
hosts: all
tasks:
- name: show debug
debug: msg="target = {{ item }} default ipv4 = {{ hostvars[item]['ansible_default_ipv4']['address'] }}"
with_items: "{{ play_hosts }}"
- name: make template
template:
src: q39005760v2.j2
dest: /home/ansible/q39005760.txt
模板:
{{ play_hosts }}
{% for host in play_hosts %}
<remote protocol="remote" host="{{ hostvars[host]['ansible_default_ipv4']['address'] }}" port="9999" />
{% endfor %}
示例文件:
q39005760.txt[---]0L:[1+01/5]*(0/124b)0045 0x02D[*]
[u'server274.mydomain.tld']
剧本:
---
# http://stackoverflow.com/questions/39005760/ansible-play-hosts-template-loop
- name: so question 39005760 version 2
hosts: all
tasks:
- name: show debug
debug: msg="target = {{ item }} default ipv4 = {{ hostvars[item]['ansible_default_ipv4']['address'] }}"
with_items: "{{ play_hosts }}"
- name: make template
template:
src: q39005760v2.j2
dest: /home/ansible/q39005760.txt
模板:
{{ play_hosts }}
{% for host in play_hosts %}
<remote protocol="remote" host="{{ hostvars[host]['ansible_default_ipv4']['address'] }}" port="9999" />
{% endfor %}
示例文件:
q39005760.txt[---]0L:[1+01/5]*(0/124b)0045 0x02D[*]
[u'server274.mydomain.tld']
我通过以下方式解决了这个问题:
{%- for h in play_hosts %}
{%- if 'master' in hostvars[h][h.split('.')[0] + '_alias'] %}
<remote protocol="remote" host="{{ hostvars[h]['ansible_default_ipv4']['address'] }}" port="9999" />
{% endif %}
{% endfor %}
{%-用于播放中的h\u主机%}
{%-如果hostvars[h][h.split('.')[0]+'_别名']%}
{%endif%}
{%endfor%}
诀窍不是依赖于ansible\u主机名
,而是依赖于迭代变量h
幸运的是,我只用了两天时间就弄明白了 我用以下方式解决了这个问题:
{%- for h in play_hosts %}
{%- if 'master' in hostvars[h][h.split('.')[0] + '_alias'] %}
<remote protocol="remote" host="{{ hostvars[h]['ansible_default_ipv4']['address'] }}" port="9999" />
{% endif %}
{% endfor %}
{%-用于播放中的h\u主机%}
{%-如果hostvars[h][h.split('.')[0]+'_别名']%}
{%endif%}
{%endfor%}
诀窍不是依赖于ansible\u主机名
,而是依赖于迭代变量h
幸运的是,我只用了两天时间就弄明白了 jinja语法是{%…%}而不是{%-…%}jinja.pocoo.org/docs/dev/templates您确定
ansible\u hostname+'\u alias'
variable name吗?我非常确定ansible\u hostname+'\u alias'我在其他地方使用过这个变量。您能试着打印hostvars并查看它显示了什么吗?示例:debug:var=hostvarjinja语法是{%…%}而不是{%-…%}jinja.pocoo.org/docs/dev/templates您确定变量名是ansible_hostname+'_alias吗?我非常确定ansible_hostname+'_alias'我在其他地方使用过这个变量。您能试着打印hostvars并查看它显示了什么吗?示例:debug:var=hostvar