Ansible with_items lorsque l'élément est défini
Ansible 1.9.4.
J'essaie d'exécuter une tâche uniquement pour les hôtes, lorsqu'une variable est définie, il fonctionne bien, mais ne fonctionne pas avec les with_items déclaration.
- debug: var=symlinks
when: symlinks is defined
- name: Create other symlinks
file: src={{ item.src }} dest={{ item.dest }} state=link
with_items: "{{ symlinks }}"
when: symlinks is defined
Mais j'obtiens:
TASK: [app/symlinks | debug var=symlinks] *********************
skipping: [another-host-yet]
TASK: [app/symlinks | Create other symlinks] ******************
fatal: [another-host-yet] => with_items expects a list or a set
Peut-être que je fais quelque chose de mal?
désolé pour mon anglais
- Quelle est la valeur de
symlinks
? - Le problème est que le même hôte, cette variable n'est pas définie
Vous devez vous connecter pour publier un commentaire.
La raison de ce comportement est des conditions de travail différemment à l'intérieur des boucles. Si une boucle a été défini la condition est évaluée pour chaque élément lors de l'itération sur les éléments. Mais la boucle elle-même exige une liste valide.
Cela est également mentionné dans les docs:
je pense que c'est un mauvais choix de conception et pour cette fonctionnalité de mieux aurait dû mettre en place quelque chose comme
with_when
.Comme vous l'avez déjà compris vous-même, vous pouvez par défaut de la liste vide.
Enfin, si la liste est chargé dynamiquement à partir d'un var, dire
x
, utilisation:Par défaut, ce sera une liste vide lors de la 'x' n'est pas définie