Как обрезать последний символ при использовании цикла ansible jinja - PullRequest
1 голос
/ 19 июня 2020

Мой шаблон похож на удар

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

Как обрезать последнюю запятую

1 Ответ

1 голос
/ 19 июня 2020

В указанном выше шаблоне есть несколько возможных ошибок, касающихся доступа к переменным. Более того, вместо обрезки последнего символа в строке, вероятно, лучшим решением будет не писать его. Вот лучшее решение 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 %}
...