Назад к вопросам
Middle
67
questionbank
Как вы организовали хранение плейбуков и ролей в вашем проекте?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Мы использовали монорепозиторий для хранения плейбуков и ролей.
Структура репозитория:
.
├── roles/ // Директория для ролей
│ ├── common/
│ │ ├── tasks/
│ │ ├── handlers/
│ │ └── files/
│ └── webserver/
│ ├── tasks/
│ └── templates/
└── playbooks/ // Директория для плейбуков
├── site.yml // Основные плейбуки
├── web-servers.yml
├── db-servers.yml
└── inventory/ // Инвентори
├── hosts.ini
└── group_vars/
├── all.yml
└── webservers.yml
- roles/: Каждая поддиректория внутри
roles/представляет собой отдельную роль. Роли содержат задачи, обработчики, шаблоны и файлы, необходимые для настройки конкретного компонента или сервиса. - playbooks/: Содержит файлы плейбуков (
.yml). Эти плейбуки описывают последовательность выполнения ролей и задач для достижения определенного состояния инфраструктуры. - inventory/: Хранит информацию об инвентори серверов, на которых выполняются плейбуки.
hosts.ini: Список хостов.group_vars/: Переменные, специфичные для групп хостов.
Версионирование осуществлялось с помощью Git. Для управления зависимостями ролей использовался requirements.yml и ansible-galaxy collection install для установки коллекций. Различные окружения (dev, stage, prod) управлялись с помощью отдельных инвентори-файлов или динамического инвентори.
Пример requirements.yml:
# collections
collections:
- name: community.general
# roles
roles:
- src: git@github.com:username/ansible-role-nginx.git
version: "1.0.0"
name: nginx