Files
DevOpsLab/roles/deploy/README.md
Sergey Antropoff 51c76fb859 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
2025-10-22 14:18:49 +03:00

115 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Роль 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