[FRsAG] Pb de vars ansible

Daniel Caillibaud ml at lairdutemps.org
Ven 27 Nov 13:59:51 CET 2020


Le 26/11/20 à 21h17, Rémi CAZENAVE - Le Filament <remi at 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


Plus d'informations sur la liste de diffusion FRsAG