# Пресеты универсальной лаборатории ## Автор Сергей Антропов Сайт: 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`