Ansible:以逗号分隔的值获取主机列表

Ansible:以逗号分隔的值获取主机列表,ansible,jinja2,Ansible,Jinja2,我在模板中有以下循环: {% for host in groups['dbnodes'] %} {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }} {% endfor %} {% for host in groups['dbnodes'] -%} {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}{% if not loop.last %},{% endif %} {%-

我在模板中有以下循环:

{% for host in groups['dbnodes'] %}
 {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
{% for host in groups['dbnodes'] -%}
 {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}{% if not loop.last %},{% endif %}
{%- endfor %}
问题是它在ip列表中给出输出,我需要逗号分隔的值。你知道怎么做到吗

我得到的答案如下:

10.0.0.190
10.0.0.117
10.0.0.151
10.0.0.190,10.0.0.117,10.0.0.151
但我需要这样:

10.0.0.190
10.0.0.117
10.0.0.151
10.0.0.190,10.0.0.117,10.0.0.151

快速修复您的Jinja2模板:

{% for host in groups['dbnodes'] %}
 {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
{% endfor %}
{% for host in groups['dbnodes'] -%}
 {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}{% if not loop.last %},{% endif %}
{%- endfor %}

我从这里得到的结果是wsrep_cluster_address=gcomm://1,0,0,0,0,1,0,0,1,7 1,0,0,0,0,0,0,0,0,0,0,1,5,1这正是我得到的:
10.0.0.190 10.0.0.0.117 10.151
@zozozozo6015我在模板中添加了一个补丁。它仍然可以通过列表过滤器和映射来完成,但这更干净,imho。@techraf你知道如何使用带yaml fie的纯Ansible获得相同的结果吗?