Le 26/11/20 à 21h17, Rémi CAZENAVE - Le Filament <[email protected]> a
écrit :
> Bonsoir,
>
> C'est parce qu'il essaie de résoudre la variable dans la condition, et
> que le first ne fonctionne pas sur une liste vide.
En fait je m'attendais à ce que ce first sur une liste vide rende la
variable undefined.
Si je teste avec
debug:
msg: "Type du []|first : {{ ansible_all_ipv4_addresses | ipaddr('public') |
first | type_debug }} "
ça affiche AnsibleUndefined
mais l'affecter à une variable et tester ensuite avec "is defined" marche pas,
je sais pas trop pourquoi… (et pas vu comment tester le type).
> Essaie d'ajouter | default([""]) avant le first variable, s'il n'y a pas
> d'adresse IP publique il devrait prendre cette valeur par défaut et
> t'afficher un string vide. Il faudrait que tu modifies aussi ta condition
> pour être si différent de "" du coup ou de longueur > 1
Oui, c'est la solution de contournement (ou comme le précise Faustin mettre
ça dans un defaults/main.yml)
=> toutes les variables sont toujours définies mais parfois vides, et on teste
juste si c'est truthy avec du
when: foo|bool
--
Daniel
Il est très curieux de constater que dans l'armée,
les statistiques le prouvent, la mortalité augmente
bizarrement en temps de guerre.
Alphonse Allais
_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/