Co powinienem zrobić, jeśli chcę pominąć całą pętlę w Ansible?Pomiń całą pętlę w Ansible
Zgodnie z wytycznymi,
Podczas łączenia
when
zwith_items
(patrz Loops), ...when
oświadczenie jest przetwarzany osobno dla każdej pozycji.
Dzięki temu podczas jazdy playbook jak ten
---
- hosts: all
vars:
skip_the_loop: true
tasks:
- command: echo "{{ item }}"
with_items: [1, 2, 3]
when: not skip_the_loop
uzyskać
skipping: [localhost] => (item=1)
skipping: [localhost] => (item=2)
skipping: [localhost] => (item=3)
Podczas gdy nie chcę warunek należy sprawdzić za każdym razem.
Potem wpadł na pomysł wykorzystania warunków inline
- hosts: all
vars:
skip_the_loop: true
tasks:
- command: echo "{{ item }}"
with_items: "{{ [1, 2, 3] if not skip_the_loop else [] }}"
Wydaje się rozwiązać mój problem, ale potem mam nic jako wyjścia. I chcę tylko jedną linię mówiąc:
skipping: Loop has been skipped
Nie sądzę, można uzyskać lepszy wynik niż twoja druga. Możesz dodać instrukcję debugowania, jeśli naprawdę potrzebujesz czegoś wydrukować – SztupY
@SztupY, już to zrobiłem, ale nadal nie jest to pożądany wynik, niestety –
żadnego powodu, dla którego warunek nie powinien być uruchamiany dla każdego pętla? Czy to tylko z powodu brzydkiego wyniku, czy też dlatego, że kontrole warunkowe zajmują dużo czasu/zasobów? – SztupY