Q: Для чего нужен файл main.yml в папке vars в ansible роли?
A: Основная причина - настроить переменные роли по умолчанию.
Переменные, определенные в role / vars / main.yml , переопределяют все переменные, определенные в ролях по умолчанию, inventory, group_vars, host_vars и все переменные, определенные в игре до того, как роль была включен в спектакль. См. Приоритет переменных: где мне поместить переменную? для подробностей.
Например, давайте создадим playbook
shell> cat playbook.yml
- hosts: localhost
vars:
test_var: test_var defined in the playbook vars
roles:
- role1
и создадим роль с пустым role / role1 / vars / main.yml и простая задача отладки в roles / role1 / tasks / main.yml
shell> cat roles/role1/tasks/main.yml
- debug:
var: test_var
shell> cat roles/role1/vars/main.yml
---
# vars file for role1
Игра будет отображать определенную переменную в переменных пьес
shell> ansible-playbook test-14.yml
...
test_var: test_var defined in the playbook vars
Теперь определите переменную test_var в role1 / vars / main.yml
shell> cat roles/role1/vars/main.yml
---
# vars file for role1
test_var: test_var defined in the role vars
Переменная, определенная в переменных роли , заменяет переменную, определенную в переменных playbook .
shell> ansible-playbook playbook.yml
...
test_var: test_var defined in the role vars
Примечания:
- Не помещайте vars / main.yml ролей в Ansible Galaxy git. Это сохранит локальные настройки от обновлений и обновлений.