Что делать, если я хочу пропустить весь цикл в Ansible?Пропустить весь цикл в Ansible
Согласно рекомендациям,
Хотя объединение
when
сwith_items
(см Loops), ...when
заявление обрабатывается отдельно для каждого элемента.
Таким образом при выполнении пьес, как, что
---
- hosts: all
vars:
skip_the_loop: true
tasks:
- command: echo "{{ item }}"
with_items: [1, 2, 3]
when: not skip_the_loop
Я получаю
skipping: [localhost] => (item=1)
skipping: [localhost] => (item=2)
skipping: [localhost] => (item=3)
В то время как я не хочу условие, чтобы проверить каждый раз.
Тогда я придумал идею использования встроенных условий
- hosts: all
vars:
skip_the_loop: true
tasks:
- command: echo "{{ item }}"
with_items: "{{ [1, 2, 3] if not skip_the_loop else [] }}"
кажется решить мою проблему, но тогда я ничего не получаю, как выход. И я хочу только одну строку, говоря:
skipping: Loop has been skipped
Я не думаю, что вы можете получить лучший результат чем ваш второй. Вы могли бы просто добавить отладку после этого, если вам действительно нужно что-то распечатано – SztupY
@SztupY, я уже сделал это, но все же это не желаемый результат, к сожалению –
любая причина, по которой вы не хотите, чтобы условие выполнялось для каждого цикл? Это только из-за уродливого вывода или из-за того, что условные проверки занимают много времени/ресурсов? – SztupY