- Создан новый 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
11 KiB
Пресеты универсальной лаборатории
Автор
Сергей Антропов
Сайт: 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
Использование
Быстрый старт
# Выбрать пресет
export LAB_SPEC=molecule/presets/minimal.yml
# Запустить тестирование
make lab-test
Создание собственного пресета
- Скопировать существующий пресет:
cp minimal.yml my-preset.yml - Отредактировать под ваши нужды
- Использовать:
make lab-test LAB_SPEC=molecule/presets/my-preset.yml
Переменные окружения
# Установить пресет по умолчанию
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
Если пресет не работает:
- Проверьте доступность Docker образов
- Убедитесь в достаточности ресурсов
- Проверьте логи:
make lab-verify - Очистите лабораторию:
make lab-cleanup