- Создана полноценная роль 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
115 lines
3.3 KiB
Markdown
115 lines
3.3 KiB
Markdown
# Роль 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
|