Ignorer certains éléments de la condition dans ansible with_items boucle
Est-il possible d'ignorer certains éléments dans Ansible with_items
l'opérateur de la boucle, au conditionnel, sans générer une étape supplémentaire?
Juste pour exemple:
- name: test task
command: touch "{{ item.item }}"
with_items:
- { item: "1" }
- { item: "2", when: "test_var is defined" }
- { item: "3" }
dans cette tâche, je veux créer le fichier 2 uniquement lorsque test_var
est défini.
OriginalL'auteur m_messiah | 2016-05-12
Vous devez vous connecter pour publier un commentaire.
L'autre réponse est proche, mais va sauter tous les articles != 2. Je ne pense pas que c'est ce que vous voulez. voici ce que je ferais:
OriginalL'auteur Petro026
La
when:
la condition que la tâche est évaluée pour chaque élément. Donc dans ce cas, il vous suffit de faire:when: (item == 2 and test_var is defined) or item != 2
à la place, ou il ne sera jamais exécuter pour les autres élémentsBon point - c'est ce que je reçois pour le contournement des ce à la hâte. 😉
Vous serait tout simplement avoir à passer les
and
àor
?OriginalL'auteur nitzmahone
Ce que vous voulez, c'est que le fichier 1 et fichier 3 toujours est créée, mais le fichier 2 est créé uniquement si
test_var
est défini. Si vous utilisez ansible est lorsque la condition qu'il fonctionne sur l'intégralité de la tâche et non sur les différents éléments comme ceci :Cette tâche de vérifier l'état de toutes les trois lignes, les éléments 1, 2 et 3.
Cependant, vous pouvez y parvenir en deux tâches simples :
Tu m'as mal, je me suis dit la même chose que ce que vous dites. Voir dans ma réponse j'ai aussi mentionné cette "Cette tâche de vérifier l'état de toutes les trois lignes, les éléments 1, 2 et 3". Par énoncé ci-dessus, je voulais dire que lorsque cette condition ne serait pas travailler seulement pour un point, mais pour tous qui signifie que pour l'ensemble de la tâche.
OriginalL'auteur Deepali Mittal