Forcer Ansible à éliminer l'erreur lorsque vars est manquant en yml?

8

Est-il possible de forcer Ansible lors du remplacement de la var dans les fichiers yml, qui n'est pas défini, de lever une erreur à la place remplacée silencieusement par une chaîne vide?

Ryan
la source

Réponses:

9

Oui c'est possible. Consultez la documentation en ligne, sous accès aux données variables complexes .

Un exemple est fourni pour faire exactement cela:

tasks:
    - shell: echo "I've got '{{ foo }}' and am not afraid to use it!"
      when: foo is defined

    - fail: msg="Bailing out: this play requires 'bar'"
      when: bar is not defined
dawud
la source
8

Ajoutez cette ligne à la [defaults]section de votre ansible.cfg:

error_on_undefined_vars = True

Vous obtiendrez maintenant un message d'erreur si une variable n'est pas définie.

Lorin Hochstein
la source
Je pense que cette option nécessite la version 1.3, qui arrive bientôt mais n'a pas encore été publiée.
mblakele
1

Définissez vos variables dans

roles/<role_name>/defaults/main.yml

comme:

SUPERVAR:
  VAR1:foo
  VAR2:bar

puis faire

roles/<role_name>/tasks/main.yml

comme:

- fail: msg="{{ item }} is not defined"
  when: not {{ item }}
  with_items:
    - SUPERVAR.VAR1
    - SUPERVAR.VAR2
Ravindranath Akila
la source