使用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 %}