Le 26/11/20 à 21h17, Rémi CAZENAVE - Le Filament <r...@le-filament.com> 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/

Répondre à