Last comma
jinja как не ставить последнюю запятую в цикле
дано: переменная с количеством серверов
задача: составить строку вида
zookeeper.connect=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181/kafka
в целом решается простым циклом for + 2 небольших нюанса:
1) вместо последней запятой стоит /kafka
2) необходимо убрать newline который добавляется на каждом проходе
Решение:
zookeeper.connect=
{%- for server in range(servers_count) -%}
zookeeper{{ server+1 }}:2181{% if not loop.last %},{% endif %}
{%- endfor %}/kafka
все довольно просто - запятая ставится конструкцией, {% if not loop.last %}, {% enfif %} а переносы строк убираются постановкой дефиса у открывающих и закрывающих тегов {% и %}
з.ы. счет начинается с нуля, поэтому для красоты именования серверов инкрементирую переменную server.
з.з.ы еще подсказали вот такой способ:
zookeeper.connect={{ range(1, servers_count + 1) | map('regex_replace', '^(.*)$', 'zookeeper\\1:2181') | join(',') }}/kafka
Скамуниздил: https://t.me/bykvaadm/1637
Last updated