- Создан новый 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`
 |