Роли Ansible предоставляют стандартизированный способ упаковки и модульного разделения задач, обработчиков, переменных и шаблонов.
🔗 Related: Основная шпаргалка по Ansible · Руководство по быстрому старту Ansible · Примеры плейбуков Ansible
Стандартная структура каталогов роли
Создайте базовую структуру роли с помощью ansible-galaxy init role_name:
roles/
common/
tasks/
main.yml # Главная точка входа для задач роли
handlers/
main.yml # Обработчики, вызываемые через notify
templates/ # Шаблоны Jinja2 (.j2) для модуля template
files/ # Статические файлы и скрипты для модуля copy
vars/
main.yml # Переменные с высоким приоритетом для данной роли
defaults/
main.yml # Переопределяемые переменные по умолчанию с низким приоритетом
meta/
main.yml # Зависимости роли и метаданные автора
Использование ролей в плейбуках
---
- name: Apply common and webserver roles
hosts: webservers
become: true
roles:
- role: common
- role: nginx
vars:
nginx_port: 8080
Приоритет переменных в ролях
Переменные в defaults/main.yml имеют самый низкий приоритет в Ansible, что делает их удобными значениями по умолчанию.
Переменные в vars/main.yml имеют высокий приоритет и предназначены для внутренней логики роли.