【问题标题】:How to trim last character when using ansible jinja loop使用ansible jinja循环时如何修剪最后一个字符
【发布时间】:2025-12-12 08:55:02
【问题描述】:

我的模板就像吹一样

{% 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,

如何修剪最后一个逗号

【问题讨论】:

    标签: ansible jinja2


    【解决方案1】:

    在您的上述模板中有几个关于变量访问的可能陷阱。此外,与其修剪字符串中的最后一个字符,最好的解决方案可能是不写它。这是我在下面的示例中解决我所指的所有问题的更好的解决方案 IMO:

    {% 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 %}
    

    【讨论】: