使用ansible jinja循环时如何修剪最后一个字符

使用ansible jinja循环时如何修剪最后一个字符,ansible,jinja2,Ansible,Jinja2,我的模板像吹一样 {% if hostvars[inventory_hostname].local_zk_server_id is defined %} zookeeperServers={% for host in {{ groups[{{ target_hosts }}] %}} "{{ hostvars[host].inventory_hostname }}:2181," {% endfor %} {% endif %} 输出是host1:2181、host2:2181、host3:

我的模板像吹一样

{% if hostvars[inventory_hostname].local_zk_server_id is defined  %}
zookeeperServers={% for host  in {{ groups[{{ target_hosts }}] %}}
"{{ hostvars[host].inventory_hostname }}:2181,"
{% endfor %}
{% endif %}
输出是host1:2181、host2:2181、host3:2181、


如何修剪最后一个逗号

关于变量访问,上面的模板中有几个可能的陷阱。此外,最好的解决方案可能是不写它,而不是修剪字符串中的最后一个字符。在我下面的例子中,这里有一个更好的解决方案,可以解决我提到的所有问题:

{% set zookeeperServers=[] %}
{% if hostvars[inventory_hostname].local_zk_server_id is defined  %}
{% for host in groups[target_hosts] %}
{% zookeeperServers.append(hostvars[host].inventory_hostname + ":2181") %}
{% endfor %}
zookeeperServers="{{ zookeeperServers | join(',') }}"
{% endif %}