Назад | Перейти на главную страницу

Заставить Ansible выдавать ошибку, когда в yml отсутствуют переменные?

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

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

Для этого предоставляется пример:

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

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

error_on_undefined_vars = True

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

Определите свои переменные в

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