feat: Создана роль deploy для управления инфраструктурой

- Создана полноценная роль deploy в roles/deploy/
- Перенесена логика развертывания из site.yml в роль
- Обновлен site.yml для использования роли deploy
- Добавлена поддержка условного развертывания по группам

Структура роли deploy:
- tasks/main.yml - основные задачи
- tasks/etcd.yml - развертывание ETCD
- tasks/patroni.yml - развертывание Patroni
- tasks/haproxy.yml - развертывание HAProxy
- tasks/apps.yml - развертывание приложений
- tasks/dind-stack.yml - развертывание DinD стека
- templates/haproxy.cfg.j2 - конфигурация HAProxy
- templates/docker-compose.yml.j2 - конфигурация DinD стека
- handlers/main.yml - обработчики сервисов
- defaults/main.yml - переменные по умолчанию
- vars/main.yml - переменные роли
- meta/main.yml - метаданные роли
- README.md - документация роли

Обновления в site.yml:
- Упрощен до базовой установки common tools
- Добавлена роль deploy с условным развертыванием
- Поддержка развертывания по группам (etcd, patroni, haproxy, apps)

Новые команды:
- make role info NAME=deploy - информация о роли
- make role deploy - развертывание ролей с inventory

Преимущества:
- Модульная архитектура с разделением ответственности
- Условное развертывание по группам хостов
- Переиспользуемые компоненты (ETCD, Patroni, HAProxy)
- Шаблоны для конфигурации сервисов
- Обработчики для перезапуска сервисов
- Подробная документация роли

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 14:18:49 +03:00
parent dc255d006a
commit 51c76fb859
16 changed files with 539 additions and 63 deletions

114
roles/deploy/README.md Normal file
View File

@@ -0,0 +1,114 @@
# Роль Deploy
Универсальная роль для развертывания инфраструктуры лаборатории.
## Описание
Роль `deploy` предназначена для развертывания различных компонентов инфраструктуры в лабораторной среде. Она поддерживает развертывание ETCD, Patroni, HAProxy и приложений с DinD стеками.
## Переменные
### Основные переменные
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `deploy_enabled` | `true` | Включить развертывание |
| `deploy_cleanup` | `false` | Очистка перед развертыванием |
### Переменные групп
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `etcd_enabled` | `true` | Включить развертывание ETCD |
| `patroni_enabled` | `true` | Включить развертывание Patroni |
| `haproxy_enabled` | `true` | Включить развертывание HAProxy |
| `apps_enabled` | `true` | Включить развертывание приложений |
### Переменные DinD
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `dind_stack_dir` | `/root/stack` | Директория для DinD стека |
| `dind_compose_file` | `docker-compose.yml` | Имя файла docker-compose |
## Использование
### Базовое использование
```yaml
- hosts: all
roles:
- role: deploy
```
### С настройками
```yaml
- hosts: all
roles:
- role: deploy
vars:
etcd_enabled: true
patroni_enabled: true
haproxy_enabled: false
apps_enabled: true
```
### Условное развертывание
```yaml
- hosts: all
roles:
- role: deploy
vars:
etcd_enabled: "{{ 'etcd' in group_names }}"
patroni_enabled: "{{ 'patroni' in group_names }}"
haproxy_enabled: "{{ 'haproxy' in group_names }}"
apps_enabled: "{{ 'apps' in group_names }}"
```
## Компоненты
### ETCD
- Установка ETCD
- Настройка сервиса
- Проверка статуса
### Patroni
- Установка PostgreSQL
- Установка Patroni
- Настройка пользователя postgres
### HAProxy
- Установка HAProxy
- Генерация конфигурации
- Настройка балансировки
### Apps
- Установка Docker
- Настройка пользователя
- Развертывание DinD стека
## Шаблоны
- `haproxy.cfg.j2` - конфигурация HAProxy
- `docker-compose.yml.j2` - конфигурация DinD стека
## Обработчики
- `restart haproxy` - перезапуск HAProxy
- `restart etcd` - перезапуск ETCD
- `restart postgresql` - перезапуск PostgreSQL
- `restart docker` - перезапуск Docker
## Требования
- Ansible >= 2.9
- Python >= 3.6
- Docker (для DinD)
- systemd
## Автор
Сергей Антропов
Сайт: https://devops.org.ru