Ответ
Стандартная структура Ansible Role включает следующие директории:
tasks/— содержит основной файл задачmain.yml. Здесь определяются шаги, которые выполняет роль.handlers/— хранит обработчики, обычно для перезапуска сервисов (например,handlers/main.yml).templates/— для файлов шаблонов Jinja2 (с расширением.j2), которые будут обработаны и скопированы на целевые хосты.files/— для статических файлов, которые копируются на управляемые узлы без изменений.vars/— переменные роли с высоким приоритетом, которые переопределяют значения по умолчанию.defaults/— переменные роли по умолчанию с самым низким приоритетом; их легко переопределить.meta/— содержит метаданные роли, такие как зависимости от других ролей в файлеmeta/main.yml.tests/— может содержать тестовые плейбуки и инвентари для проверки роли.library/(опционально) — для размещения пользовательских модулей Ansible, специфичных для этой роли.
Пример структуры в файловой системе:
my_role/
├── tasks/
│ └── main.yml
├── handlers/
│ └── main.yml
├── templates/
│ └── nginx.conf.j2
├── files/
│ └── custom_script.sh
├── vars/
│ └── main.yml
├── defaults/
│ └── main.yml
├── meta/
│ └── main.yml
└── tests/
├── inventory
└── test.yml
На практике я чаще всего работаю с tasks/, handlers/, templates/ и defaults/. Директория meta/ критически важна для управления зависимостями между ролями в больших проектах.