Ответ
Это директории внутри роли Ansible для определения переменных, и их главное отличие — приоритет.
-
defaults/main.yml— переменные с самым низким приоритетом. Это значения "по умолчанию", которые задуманы для легкого переопределения извне (например, из inventory, group_vars, или через--extra-vars).# defaults/main.yml для роли 'webserver' http_port: 80 service_name: "nginx" -
vars/main.yml— переменные с высоким приоритетом. Они переопределяют значения изdefaults. Здесь размещают "внутренние" константы роли, которые не должны меняться при обычном использовании.# vars/main.yml package_name: "nginx-{{ ansible_distribution_release }}" config_template: "nginx.conf.j2"
Практическое правило, которое я использую:
- В
defaultsкладу настройки, которые пользователь роли захочет изменить (порты, версии пакетов, пути). - В
varsкладу логику работы самой роли, имена внутренних файлов, зависимости — всё, что должно оставаться неизменным для корректной работы роли.
Порядок приоритетов (по возрастанию): role_defaults -> inventory vars -> group_vars -> host_vars -> role_vars -> --extra-vars.