Печать пробелов в цикле дзиндзя - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь распечатать список хостов в задаче ansible;

Я хочу иметь пробелы между ними, однако следующий цикл не достигает цели:

{% for host in groups['all'] -%} {{ host }}:6379 {%- endfor %} 

Есть предложения?

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Если вы хотите собрать их все в одну строку и не возражаете иметь пробел в начале, вы можете просто сделать:

{% for host in groups['all'] -%} {{ ' ' ~ host }}:6379 {%- endfor %}

Вы также можете добавить символ в конецкаждого элемента (например, пробел или что-то еще), при этом пропуская последний.Обратите внимание на пробел между if и endif:

{% for host in groups['all'] -%}
{{ host }}:6379
{%- if not loop.last %} {% endif %}
{%- endfor %} 
0 голосов
/ 18 марта 2019

В качестве альтернативы циклу jinia вы можете использовать объединяющий фильтр ansibles, см. https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#id8

в этом случае:

{{ groups["all"] | join(":6379 ") }}

Соединение является противоположностью для разделения. split принимает строку и разделитель, а затем возвращает список. Объединение принимает список и строку для объединения всех элементов списка в одну строку.

...