Jinja шаблон петли проблема - PullRequest
0 голосов
/ 11 октября 2019

У меня есть шаблон jinja для добавления имени хоста эластичного поиска на основе переменных, определенных в файле хоста, но он не работает для условия.

Мой шаблон

discovery.seed_hosts: [{% for es_host in ansible_play_hosts if hostvars[inventory_hostname].type == 'master' %} "{{ es_host }}" {%- if not loop.last %},{% endif %}{% endfor %}]

Мой host.yml

[sample]
master01 type=master
data01 type=data

Когда я копирую шаблон, имеющий как master01, так и data01 на master 01, хотя я ищу только тип master и ни одного в узле данных.

master01
discovery.seed_hosts: [ "master01", "data01"]

data01
discovery.seed_hosts: []

1 Ответ

0 голосов
/ 11 октября 2019

Ваш условный оператор обернут вокруг всего оператора for, а не внутри цикла. Таким образом, если тип хоста, с которым вы в данный момент запускаете игру, не является «основным», цикл не будет работать, и если он это сделает, он будет работать против всех. Попробуйте вместо этого:

discovery.seed_hosts: [{% for es_host in ansible_play_hosts %} {% if hostvars[es_host].type == 'master' %} "{{ es_host }}"{% endif%}{%- if not loop.last %},{% endif %}{% endfor %}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...