- Создан новый README.md с полной документацией проекта - Перемещены все MD файлы в папку /docs - Создана структура документации: - docs/universal-lab.md - руководство по лаборатории - docs/presets.md - описание всех 21 пресета - docs/roles.md - структура и создание Ansible ролей - docs/examples.md - практические примеры использования - docs/troubleshooting.md - решение проблем - docs/api.md - справочник по API Основные возможности документации: - Полное описание всех возможностей лаборатории - 21 готовый пресет для различных сценариев - Подробные инструкции по использованию - Примеры создания собственных пресетов - Руководство по созданию Ansible ролей - Troubleshooting для решения проблем - API Reference для всех команд и параметров Структура проекта: - README.md - основная документация с ссылками - docs/ - централизованное хранение документации - molecule/presets/ - 21 готовый пресет - files/ - файлы для ролей и playbooks - scripts/ - скрипты для управления лабораторией Автор: Сергей Антропов Сайт: https://devops.org.ru
197 lines
11 KiB
Markdown
197 lines
11 KiB
Markdown
# Пресеты универсальной лаборатории
|
||
|
||
## Автор
|
||
Сергей Антропов
|
||
Сайт: https://devops.org.ru
|
||
|
||
## Описание
|
||
|
||
Этот каталог содержит готовые пресеты для различных сценариев тестирования Ansible ролей. Каждый пресет оптимизирован для определенного типа инфраструктуры и количества машин.
|
||
|
||
## Доступные пресеты
|
||
|
||
### 🏗️ Классические пресеты (systemd контейнеры)
|
||
|
||
#### 1. Минимальная лаборатория (1-3 машины)
|
||
**Файл:** `minimal.yml`
|
||
**Описание:** Базовая конфигурация для простых тестов Ansible ролей
|
||
**Компоненты:** 1 контроллер, 1 веб-сервер, 1 база данных
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/minimal.yml`
|
||
|
||
### 2. Веб-приложение (3-5 машин)
|
||
**Файл:** `webapp.yml`
|
||
**Описание:** Классическая архитектура веб-приложения
|
||
**Компоненты:** 2 веб-сервера, 1 БД, 1 кэш, 1 балансировщик
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/webapp.yml`
|
||
|
||
### 3. Микросервисы (5-8 машин)
|
||
**Файл:** `microservices.yml`
|
||
**Описание:** Архитектура микросервисов с разделением ответственности
|
||
**Компоненты:** API Gateway, микросервисы, БД, кэш, очередь, мониторинг
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/microservices.yml`
|
||
|
||
### 4. Высокая доступность (6-10 машин)
|
||
**Файл:** `ha.yml`
|
||
**Описание:** Кластер высокой доступности с репликацией
|
||
**Компоненты:** 2 веб-сервера, 2 БД, 2 кэша, балансировщик, мониторинг
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/ha.yml`
|
||
|
||
### 5. Kubernetes кластер (8-12 машин)
|
||
**Файл:** `k8s-cluster.yml`
|
||
**Описание:** Полноценный Kubernetes кластер с различными ролями
|
||
**Компоненты:** 3 master, 3 worker, 3 etcd, ingress, мониторинг
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-cluster.yml`
|
||
|
||
### 6. CI/CD пайплайн (10-15 машин)
|
||
**Файл:** `cicd.yml`
|
||
**Описание:** Полноценный CI/CD пайплайн с различными инструментами
|
||
**Компоненты:** Git, Jenkins, Nexus, Docker Registry, среды, мониторинг, ELK
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/cicd.yml`
|
||
|
||
### 7. Big Data кластер (12-18 машин)
|
||
**Файл:** `bigdata.yml`
|
||
**Описание:** Кластер для обработки больших данных
|
||
**Компоненты:** Hadoop, Spark, Kafka, Zookeeper, Elasticsearch, Kibana
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/bigdata.yml`
|
||
|
||
### 8. Service Mesh (15-20 машин)
|
||
**Файл:** `servicemesh.yml`
|
||
**Описание:** Полноценный service mesh с Istio и множественными сервисами
|
||
**Компоненты:** Istio, Frontend, Backend, БД, кэш, мониторинг, трассировка
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/servicemesh.yml`
|
||
|
||
### 9. Enterprise (18-20 машин)
|
||
**Файл:** `enterprise.yml`
|
||
**Описание:** Полноценная enterprise инфраструктура с высокой доступностью
|
||
**Компоненты:** LB, Web, API Gateway, App, БД, кэш, очереди, поиск, мониторинг, логи, backup
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/enterprise.yml`
|
||
|
||
### 10. Максимальный (20 машин)
|
||
**Файл:** `maximum.yml`
|
||
**Описание:** Максимально сложная инфраструктура для экстремальных условий
|
||
**Компоненты:** Все компоненты enterprise + трассировка + визуализация
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/maximum.yml`
|
||
|
||
### ☸️ Kubernetes пресеты
|
||
|
||
#### 11. Kubernetes Single Node (1 кластер)
|
||
**Файл:** `k8s-single.yml`
|
||
**Описание:** Одиночный Kind кластер для простого тестирования K8s ролей
|
||
**Компоненты:** 1 Kind кластер с 1 worker, базовые аддоны
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-single.yml`
|
||
|
||
#### 12. Kubernetes Multi-Cluster (3 кластера)
|
||
**Файл:** `k8s-multi.yml`
|
||
**Описание:** Несколько Kind кластеров для тестирования мульти-кластерных сценариев
|
||
**Компоненты:** 3 кластера (dev, staging, prod) с различными конфигурациями
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-multi.yml`
|
||
|
||
#### 13. Kubernetes + Istio Full Stack (1 кластер с полным стеком)
|
||
**Файл:** `k8s-istio-full.yml`
|
||
**Описание:** Полноценный Kubernetes кластер с полным стеком Istio
|
||
**Компоненты:** 1 Kind кластер с 3 workers, Istio, Kiali, Prometheus, Grafana, Jaeger
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-istio-full.yml`
|
||
|
||
### 🐳 Docker-in-Docker (DinD) пресеты
|
||
|
||
#### 14. DinD Simple (3 DinD контейнера)
|
||
**Файл:** `dind-simple.yml`
|
||
**Описание:** Простая конфигурация DinD для тестирования Docker ролей
|
||
**Компоненты:** 3 DinD контейнера с изолированными Docker средами
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-simple.yml`
|
||
|
||
#### 15. DinD Swarm (5 DinD контейнеров)
|
||
**Файл:** `dind-swarm.yml`
|
||
**Описание:** Docker Swarm кластер для тестирования оркестрации
|
||
**Компоненты:** 1 Manager + 4 Worker узла в Docker Swarm режиме
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-swarm.yml`
|
||
|
||
#### 16. DinD Compose (4 DinD контейнера)
|
||
**Файл:** `dind-compose.yml`
|
||
**Описание:** DinD контейнеры для тестирования Docker Compose стека
|
||
**Компоненты:** 4 DinD контейнера с различными стеками
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-compose.yml`
|
||
|
||
### 🔗 Docker-outside-of-Docker (DOoD) пресеты
|
||
|
||
#### 17. DOoD Simple (3 DOoD контейнера)
|
||
**Файл:** `dood-simple.yml`
|
||
**Описание:** Простая конфигурация DOoD для тестирования Docker ролей
|
||
**Компоненты:** 3 DOoD контейнера с доступом к Docker daemon хоста
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-simple.yml`
|
||
|
||
#### 18. DOoD Mixed (5 DOoD + 2 systemd)
|
||
**Файл:** `dood-mixed.yml`
|
||
**Описание:** Смешанная конфигурация DOoD и systemd контейнеров
|
||
**Компоненты:** 5 DOoD контейнеров для Docker операций + 2 systemd для системных ролей
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-mixed.yml`
|
||
|
||
### 🔀 Смешанные пресеты
|
||
|
||
#### 19. Mixed Kubernetes + DinD (1 K8s + 3 DinD)
|
||
**Файл:** `mixed-k8s-dind.yml`
|
||
**Описание:** Смешанная конфигурация Kubernetes и Docker-in-Docker
|
||
**Компоненты:** 1 Kind кластер + 3 DinD контейнера
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dind.yml`
|
||
|
||
#### 20. Mixed Kubernetes + DOoD (1 K8s + 3 DOoD)
|
||
**Файл:** `mixed-k8s-dood.yml`
|
||
**Описание:** Смешанная конфигурация Kubernetes и Docker-outside-of-Docker
|
||
**Компоненты:** 1 Kind кластер + 3 DOoD контейнера
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dood.yml`
|
||
|
||
#### 21. Mixed Full Stack (1 K8s + 2 DinD + 2 DOoD + 2 systemd)
|
||
**Файл:** `mixed-full.yml`
|
||
**Описание:** Полная смешанная конфигурация для комплексного тестирования
|
||
**Компоненты:** 1 Kind кластер + 2 DinD + 2 DOoD + 2 systemd контейнера
|
||
**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-full.yml`
|
||
|
||
## Использование
|
||
|
||
### Быстрый старт
|
||
```bash
|
||
# Выбрать пресет
|
||
export LAB_SPEC=molecule/presets/minimal.yml
|
||
|
||
# Запустить тестирование
|
||
make lab-test
|
||
```
|
||
|
||
### Создание собственного пресета
|
||
1. Скопировать существующий пресет: `cp minimal.yml my-preset.yml`
|
||
2. Отредактировать под ваши нужды
|
||
3. Использовать: `make lab-test LAB_SPEC=molecule/presets/my-preset.yml`
|
||
|
||
### Переменные окружения
|
||
```bash
|
||
# Установить пресет по умолчанию
|
||
export LAB_SPEC=molecule/presets/webapp.yml
|
||
|
||
# Или использовать в команде
|
||
make lab-test LAB_SPEC=molecule/presets/ha.yml
|
||
```
|
||
|
||
## Рекомендации
|
||
|
||
- **Для начинающих:** используйте `minimal.yml` или `webapp.yml`
|
||
- **Для микросервисов:** `microservices.yml` или `servicemesh.yml`
|
||
- **Для Kubernetes:** `k8s-cluster.yml`
|
||
- **Для enterprise:** `enterprise.yml` или `maximum.yml`
|
||
- **Для Big Data:** `bigdata.yml`
|
||
|
||
## Кастомизация
|
||
|
||
Каждый пресет можно настроить под ваши нужды:
|
||
- Изменить количество машин
|
||
- Добавить/убрать группы
|
||
- Изменить семейства ОС (debian/rhel)
|
||
- Настроить порты и переменные
|
||
|
||
## Troubleshooting
|
||
|
||
Если пресет не работает:
|
||
1. Проверьте доступность Docker образов
|
||
2. Убедитесь в достаточности ресурсов
|
||
3. Проверьте логи: `make lab-verify`
|
||
4. Очистите лабораторию: `make lab-cleanup`
|