Заставить Ansible выдать ошибку, если в yml отсутствует vars?

8

Можно ли принудительно вызвать Ansible при замене переменной в файлах yml, которая не определена, и вместо этого тихо заменить пустую строку?

Райан
источник

Ответы:

9

Да, это возможно. Проверьте онлайн-документацию в разделе доступа к сложным переменным данным .

Пример предоставлен, чтобы сделать именно это:

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
Дауд
источник
8

Добавьте эту строку в [defaults]раздел вашего ansible.cfg:

error_on_undefined_vars = True

Теперь вы получите сообщение об ошибке, если переменная не определена.

Лорин Хохштайн
источник
Я считаю, что для этого варианта требуется 1.3, который скоро появится, но еще не выпущен.
Мблакеле
1

Определите ваши переменные в

roles/<role_name>/defaults/main.yml

подобно:

SUPERVAR:
  VAR1:foo
  VAR2:bar

а затем сделать в

roles/<role_name>/tasks/main.yml

подобно:

- fail: msg="{{ item }} is not defined"
  when: not {{ item }}
  with_items:
    - SUPERVAR.VAR1
    - SUPERVAR.VAR2
Равиндранат Акила
источник