feat: Добавлена автоматическая инициализация проекта при первом запуске

- Добавлена проверка инициализации проекта (check-init)
- Автоматический запуск инициализации при первом запуске
- Интерактивная настройка всех параметров проекта
- Создание файлов .env, vault/.vault, molecule/presets/minimal.yml
- Проверка наличия необходимых файлов и папок

Проверка инициализации:
- Проверка наличия .env файла
- Проверка наличия vault/.vault файла
- Проверка наличия папки molecule/presets
- Автоматический запуск инициализации при отсутствии файлов

Интерактивная инициализация:
- Настройка основных параметров проекта (название, версия, автор, сайт)
- Настройка Docker (образ, сеть)
- Настройка лаборатории (сценарий, пресет)
- Настройка Kubernetes (контекст, версии Istio/Kind)
- Настройка путей (папка ролей, файл vault)
- Создание файла .env с всеми настройками
- Создание vault файлов
- Создание минимального пресета лаборатории
- Создание необходимых папок

Преимущества:
- Автоматическая инициализация при первом запуске
- Интерактивная настройка всех параметров
- Значения по умолчанию для быстрой настройки
- Создание всех необходимых файлов и папок
- Проверка инициализации при каждом запуске
- Нет повторной инициализации после настройки

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 15:36:48 +03:00
parent f45ae8b64e
commit 1909746098
23 changed files with 152 additions and 1865 deletions

143
Makefile
View File

@@ -76,7 +76,7 @@ help: ## Показать справку по всем командам
@echo "$(YELLOW)Подробная документация: docs/$(RESET)"
.PHONY: menu
menu: check-whiptail ## Интерактивное главное меню
menu: check-whiptail check-init ## Интерактивное главное меню
@while true; do \
CHOICE=$$(whiptail --title "Ansible Template - Универсальная лаборатория" \
--menu "Выберите действие:" 20 60 12 \
@@ -112,6 +112,147 @@ menu: check-whiptail ## Интерактивное главное меню
esac; \
done
# =============================================================================
# ПРОВЕРКИ ИНИЦИАЛИЗАЦИИ
# =============================================================================
.PHONY: check-init
check-init: ## Проверить инициализацию проекта
@if [ ! -f .env ] || [ ! -f vault/.vault ] || [ ! -d molecule/presets ]; then \
echo "$(YELLOW)🔧 Первый запуск проекта - требуется инициализация$(RESET)"; \
echo "$(CYAN)🚀 Добро пожаловать в Ansible Template!$(RESET)"; \
echo "$(BLUE)Добро пожаловать в универсальную лабораторию для тестирования Ansible ролей!$(RESET)"; \
echo "$(BLUE)Для начала работы необходимо выполнить инициализацию проекта.$(RESET)"; \
echo "$(BLUE)Это займет всего несколько минут и включает:$(RESET)"; \
echo "$(BLUE)• Настройку переменных окружения$(RESET)"; \
echo "$(BLUE)• Создание vault файлов$(RESET)"; \
echo "$(BLUE)• Подготовку пресетов лаборатории$(RESET)"; \
echo ""; \
echo "$(YELLOW)Нажмите Enter для начала инициализации...$(RESET)"; \
read -r; \
make init-interactive; \
fi
.PHONY: init-interactive
init-interactive: ## Интерактивная инициализация проекта
@echo "$(CYAN)🚀 Инициализация проекта Ansible Template$(RESET)"; \
echo "$(BLUE)📝 Настройка основных параметров проекта$(RESET)"; \
echo "$(YELLOW)Используйте значения по умолчанию (нажмите Enter) или введите свои значения$(RESET)"; \
echo ""; \
echo -n "$(BLUE)Название проекта [ansible-template]: $(RESET)"; \
read -r PROJECT_NAME; \
PROJECT_NAME=$${PROJECT_NAME:-ansible-template}; \
echo -n "$(BLUE)Версия проекта [0.1.0]: $(RESET)"; \
read -r VERSION; \
VERSION=$${VERSION:-0.1.0}; \
echo -n "$(BLUE)Автор проекта [Сергей Антропов]: $(RESET)"; \
read -r AUTHOR; \
AUTHOR=$${AUTHOR:-Сергей Антропов}; \
echo -n "$(BLUE)Сайт проекта [https://devops.org.ru]: $(RESET)"; \
read -r SITE; \
SITE=$${SITE:-https://devops.org.ru}; \
echo ""; \
echo "$(BLUE)🐳 Настройка Docker$(RESET)"; \
echo -n "$(BLUE)Docker образ для Ansible [quay.io/ansible/creator-ee:latest]: $(RESET)"; \
read -r DOCKER_IMAGE; \
DOCKER_IMAGE=$${DOCKER_IMAGE:-quay.io/ansible/creator-ee:latest}; \
echo -n "$(BLUE)Docker сеть [labnet]: $(RESET)"; \
read -r DOCKER_NETWORK; \
DOCKER_NETWORK=$${DOCKER_NETWORK:-labnet}; \
echo ""; \
echo "$(BLUE)🧪 Настройка лаборатории$(RESET)"; \
echo -n "$(BLUE)Сценарий Molecule [universal]: $(RESET)"; \
read -r SCENARIO; \
SCENARIO=$${SCENARIO:-universal}; \
echo -n "$(BLUE)Пресет лаборатории [molecule/presets/minimal.yml]: $(RESET)"; \
read -r LAB_SPEC; \
LAB_SPEC=$${LAB_SPEC:-molecule/presets/minimal.yml}; \
echo ""; \
echo "$(BLUE)☸️ Настройка Kubernetes$(RESET)"; \
echo -n "$(BLUE)Kubernetes контекст [kind-lab]: $(RESET)"; \
read -r KUBE_CONTEXT; \
KUBE_CONTEXT=$${KUBE_CONTEXT:-kind-lab}; \
echo -n "$(BLUE)Версия Istio [1.22.1]: $(RESET)"; \
read -r ISTIO_VERSION; \
ISTIO_VERSION=$${ISTIO_VERSION:-1.22.1}; \
echo -n "$(BLUE)Версия Kind [v0.23.0]: $(RESET)"; \
read -r KIND_VERSION; \
KIND_VERSION=$${KIND_VERSION:-v0.23.0}; \
echo ""; \
echo "$(BLUE)📁 Настройка путей$(RESET)"; \
echo -n "$(BLUE)Папка ролей [./roles]: $(RESET)"; \
read -r ROLES_DIR; \
ROLES_DIR=$${ROLES_DIR:-./roles}; \
echo -n "$(BLUE)Файл пароля vault [vault/.vault]: $(RESET)"; \
read -r VAULT_PASSWORD_FILE; \
VAULT_PASSWORD_FILE=$${VAULT_PASSWORD_FILE:-vault/.vault}; \
echo ""; \
echo "$(BLUE)📝 Создание файла .env$(RESET)"; \
echo "# Ansible Template - Универсальная лаборатория" > .env; \
echo "# Автор: $$AUTHOR" >> .env; \
echo "# Сайт: $$SITE" >> .env; \
echo "# Версия: $$VERSION" >> .env; \
echo "" >> .env; \
echo "# Основные переменные" >> .env; \
echo "PROJECT_NAME=$$PROJECT_NAME" >> .env; \
echo "VERSION=$$VERSION" >> .env; \
echo "AUTHOR=$$AUTHOR" >> .env; \
echo "SITE=$$SITE" >> .env; \
echo "" >> .env; \
echo "# Docker переменные" >> .env; \
echo "DOCKER_IMAGE=$$DOCKER_IMAGE" >> .env; \
echo "DOCKER_COMPOSE=docker compose" >> .env; \
echo "DOCKER_NETWORK=$$DOCKER_NETWORK" >> .env; \
echo "" >> .env; \
echo "# Molecule переменные" >> .env; \
echo "SCENARIO=$$SCENARIO" >> .env; \
echo "LAB_SPEC=$$LAB_SPEC" >> .env; \
echo "MOLECULE_EPHEMERAL_DIRECTORY=/tmp/molecule" >> .env; \
echo "" >> .env; \
echo "# Kubernetes переменные" >> .env; \
echo "KUBE_CONTEXT=$$KUBE_CONTEXT" >> .env; \
echo "ISTIO_VERSION=$$ISTIO_VERSION" >> .env; \
echo "KIND_VERSION=$$KIND_VERSION" >> .env; \
echo "" >> .env; \
echo "# Переменные окружения" >> .env; \
echo "ENV_FILE=.env" >> .env; \
echo "ROLES_DIR=$$ROLES_DIR" >> .env; \
echo "VAULT_PASSWORD_FILE=$$VAULT_PASSWORD_FILE" >> .env; \
echo "$(BLUE)🔐 Создание vault файлов$(RESET)"; \
mkdir -p vault; \
echo "ansible-vault-password" > vault/.vault; \
echo "$(BLUE)📋 Создание пресетов лаборатории$(RESET)"; \
mkdir -p molecule/presets; \
echo "---" > molecule/presets/minimal.yml; \
echo "# Минимальный пресет лаборатории" >> molecule/presets/minimal.yml; \
echo "# Автор: $$AUTHOR" >> molecule/presets/minimal.yml; \
echo "# Сайт: $$SITE" >> molecule/presets/minimal.yml; \
echo "" >> molecule/presets/minimal.yml; \
echo "hosts:" >> molecule/presets/minimal.yml; \
echo " - name: host1" >> molecule/presets/minimal.yml; \
echo " family: debian" >> molecule/presets/minimal.yml; \
echo " groups: [all]" >> molecule/presets/minimal.yml; \
echo "" >> molecule/presets/minimal.yml; \
echo "features:" >> molecule/presets/minimal.yml; \
echo " docker: true" >> molecule/presets/minimal.yml; \
echo " dind: false" >> molecule/presets/minimal.yml; \
echo " k8s: false" >> molecule/presets/minimal.yml; \
echo " istio: false" >> molecule/presets/minimal.yml; \
echo " monitoring: false" >> molecule/presets/minimal.yml; \
echo " chaos: false" >> molecule/presets/minimal.yml; \
echo "$(BLUE)📁 Создание необходимых папок$(RESET)"; \
mkdir -p roles molecule/universal reports docs; \
echo ""; \
echo "$(GREEN)✅ Инициализация проекта завершена!$(RESET)"; \
echo "$(GREEN)Созданы файлы:$(RESET)"; \
echo "$(GREEN)• .env - переменные окружения$(RESET)"; \
echo "$(GREEN)• vault/.vault - пароль vault$(RESET)"; \
echo "$(GREEN)• molecule/presets/minimal.yml - минимальный пресет$(RESET)"; \
echo ""; \
echo "$(YELLOW)Теперь вы можете использовать все возможности лаборатории!$(RESET)"; \
echo "$(YELLOW)Нажмите Enter для продолжения...$(RESET)"; \
read -r
# =============================================================================
# ИНТЕРАКТИВНЫЕ МЕНЮ
# =============================================================================

View File

@@ -1,120 +0,0 @@
---
# ПРЕСЕТ: Big Data кластер (12-18 машин)
#
# Описание: Кластер для обработки больших данных с различными компонентами
# - 3 Hadoop NameNode (активный/резервный/журнал) - метаданные
# - 3 Hadoop DataNode - хранение данных
# - 1 Hive Metastore - метаданные таблиц
# - 1 Spark Master - управление Spark
# - 2 Spark Worker - обработка данных
# - 1 Kafka Broker - потоковая обработка
# - 1 Zookeeper - координация сервисов
# - 1 Elasticsearch - поиск и аналитика
# - 1 Kibana - визуализация данных
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/bigdata.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: namenode1
group: namenodes
family: debian
publish:
- "9870:9870"
- name: namenode2
group: namenodes
family: rhel
publish:
- "9871:9870"
- name: namenode3
group: namenodes
family: debian
publish:
- "9872:9870"
- name: datanode1
group: datanodes
family: rhel
publish:
- "9864:9864"
- name: datanode2
group: datanodes
family: debian
publish:
- "9865:9864"
- name: datanode3
group: datanodes
family: rhel
publish:
- "9866:9864"
- name: hive-metastore
group: metastores
family: debian
publish:
- "9083:9083"
- name: spark-master
group: spark
family: rhel
publish:
- "8080:8080"
- name: spark-worker1
group: spark
family: debian
publish:
- "8081:8080"
- name: spark-worker2
group: spark
family: rhel
publish:
- "8082:8080"
- name: kafka
group: streaming
family: debian
publish:
- "9092:9092"
- name: zookeeper
group: coordination
family: rhel
publish:
- "2181:2181"
- name: elasticsearch
group: search
family: debian
publish:
- "9200:9200"
- name: kibana
group: visualization
family: rhel
publish:
- "5601:5601"

View File

@@ -1,100 +0,0 @@
---
# ПРЕСЕТ: CI/CD пайплайн (10-15 машин)
#
# Описание: Полноценный CI/CD пайплайн с различными инструментами
# - 1 Git сервер (Gitea) - управление кодом
# - 2 CI сервера (Jenkins) - сборка и тестирование
# - 1 артефакт репозиторий (Nexus) - хранение артефактов
# - 1 Docker registry - хранение образов
# - 2 тестовые среды (staging, production) - развертывание
# - 1 мониторинг (Prometheus) - метрики пайплайна
# - 1 логирование (ELK Stack) - централизованные логи
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/cicd.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: git-server
group: scm
family: debian
publish:
- "3000:3000"
- name: jenkins1
group: ci
family: rhel
publish:
- "8080:8080"
- name: jenkins2
group: ci
family: debian
publish:
- "8081:8080"
- name: nexus
group: artifacts
family: rhel
publish:
- "8081:8081"
- name: docker-registry
group: registries
family: debian
publish:
- "5000:5000"
- name: staging
group: environments
family: rhel
publish:
- "8082:80"
- name: production
group: environments
family: debian
publish:
- "8083:80"
- name: monitoring
group: monitoring
family: rhel
publish:
- "9090:9090"
- name: elasticsearch
group: logging
family: debian
publish:
- "9200:9200"
- name: kibana
group: logging
family: rhel
publish:
- "5601:5601"
- name: logstash
group: logging
family: debian
publish:
- "5044:5044"

View File

@@ -1,58 +0,0 @@
---
# ПРЕСЕТ: Docker-in-Docker Compose (4 DinD контейнера)
#
# Описание: DinD контейнеры для тестирования Docker Compose стека
# - 4 DinD контейнера с различными стеками
# - Тестирование multi-container приложений
# - Различные версии Docker Compose
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-compose.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: compose-web
type: dind
group: compose
publish:
- "2375:2375" # Docker API
- "8080:80" # Web port
- name: compose-api
type: dind
group: compose
publish:
- "2376:2375" # Docker API
- "8081:3000" # API port
- name: compose-db
type: dind
group: compose
publish:
- "2377:2375" # Docker API
- "8082:5432" # DB port
- name: compose-cache
type: dind
group: compose
publish:
- "2378:2375" # Docker API
- "8083:6379" # Cache port

View File

@@ -1,51 +0,0 @@
---
# ПРЕСЕТ: Docker-in-Docker Simple (3 DinD контейнера)
#
# Описание: Простая конфигурация DinD для тестирования Docker ролей
# - 3 DinD контейнера с различными конфигурациями
# - Изолированные Docker среды
# - Тестирование Docker Compose, Docker Swarm
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-simple.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: dind1
type: dind
group: dind
publish:
- "2375:2375" # Docker API
- "8080:8080" # App port
- name: dind2
type: dind
group: dind
publish:
- "2376:2375" # Docker API
- "8081:8080" # App port
- name: dind3
type: dind
group: dind
publish:
- "2377:2375" # Docker API
- "8082:8080" # App port

View File

@@ -1,65 +0,0 @@
---
# ПРЕСЕТ: Docker-in-Docker Swarm (5 DinD контейнеров)
#
# Описание: Docker Swarm кластер для тестирования оркестрации
# - 1 Manager + 4 Worker узла
# - Docker Swarm режим
# - Тестирование сервисов, стеков, секретов
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dind-swarm.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: swarm-manager
type: dind
group: swarm
publish:
- "2375:2375" # Docker API
- "8080:8080" # App port
- name: swarm-worker1
type: dind
group: swarm
publish:
- "2376:2375" # Docker API
- "8081:8080" # App port
- name: swarm-worker2
type: dind
group: swarm
publish:
- "2377:2375" # Docker API
- "8082:8080" # App port
- name: swarm-worker3
type: dind
group: swarm
publish:
- "2378:2375" # Docker API
- "8083:8080" # App port
- name: swarm-worker4
type: dind
group: swarm
publish:
- "2379:2375" # Docker API
- "8084:8080" # App port

View File

@@ -1,89 +0,0 @@
---
# ПРЕСЕТ: Docker-outside-of-Docker Mixed (5 DOoD + 2 systemd)
#
# Описание: Смешанная конфигурация DOoD и systemd контейнеров
# - 5 DOoD контейнеров для Docker операций
# - 2 systemd контейнера для системных ролей
# - Тестирование гибридных сценариев
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-mixed.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
# DOoD контейнеры
- name: dood-web
type: dood
family: debian
group: dood
publish:
- "8080:80"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-api
type: dood
family: rhel
group: dood
publish:
- "8081:3000"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-db
type: dood
family: debian
group: dood
publish:
- "8082:5432"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-cache
type: dood
family: rhel
group: dood
publish:
- "8083:6379"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-queue
type: dood
family: debian
group: dood
publish:
- "8084:5672"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
# Systemd контейнеры
- name: systemd-monitor
family: rhel
group: monitoring
publish:
- "9090:9090"
- name: systemd-logs
family: debian
group: logging
publish:
- "5601:5601"

View File

@@ -1,57 +0,0 @@
---
# ПРЕСЕТ: Docker-outside-of-Docker Simple (3 DOoD контейнера)
#
# Описание: Простая конфигурация DOoD для тестирования Docker ролей
# - 3 DOoD контейнера с доступом к Docker daemon хоста
# - Тестирование Docker ролей без изоляции
# - Различные семейства ОС
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/dood-simple.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: dood1
type: dood
family: debian
group: dood
publish:
- "8080:8080" # App port
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood2
type: dood
family: rhel
group: dood
publish:
- "8081:8080" # App port
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood3
type: dood
family: debian
group: dood
publish:
- "8082:8080" # App port
env:
DOCKER_HOST: "unix:///var/run/docker.sock"

View File

@@ -1,167 +0,0 @@
---
# ПРЕСЕТ: Enterprise (18-20 машин)
#
# Описание: Полноценная enterprise инфраструктура с высокой доступностью
# - 2 Load Balancer (HAProxy) - балансировка нагрузки
# - 3 Web сервера (nginx) - веб-приложения
# - 2 API Gateway (Kong) - управление API
# - 3 Application сервера - бизнес-логика
# - 2 Database Master/Slave (PostgreSQL) - основная БД
# - 2 Cache кластер (Redis) - кэширование
# - 1 Message Queue (RabbitMQ) - асинхронная обработка
# - 1 Search Engine (Elasticsearch) - поиск
# - 1 Monitoring (Prometheus) - метрики
# - 1 Logging (ELK Stack) - централизованные логи
# - 1 Backup сервер - резервное копирование
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/enterprise.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: lb1
group: loadbalancers
family: debian
publish:
- "80:80"
- "443:443"
- name: lb2
group: loadbalancers
family: rhel
publish:
- "8080:80"
- "8443:443"
- name: web1
group: webservers
family: rhel
publish:
- "8081:80"
- name: web2
group: webservers
family: debian
publish:
- "8082:80"
- name: web3
group: webservers
family: rhel
publish:
- "8083:80"
- name: api-gateway1
group: gateways
family: debian
publish:
- "8001:8000"
- name: api-gateway2
group: gateways
family: rhel
publish:
- "8002:8000"
- name: app1
group: applications
family: rhel
publish:
- "9001:9000"
- name: app2
group: applications
family: debian
publish:
- "9002:9000"
- name: app3
group: applications
family: rhel
publish:
- "9003:9000"
- name: db-master
group: databases
family: debian
publish:
- "5432:5432"
- name: db-slave
group: databases
family: rhel
publish:
- "5433:5432"
- name: cache1
group: caches
family: debian
publish:
- "6379:6379"
- name: cache2
group: caches
family: rhel
publish:
- "6380:6379"
- name: message-queue
group: queues
family: debian
publish:
- "5672:5672"
- "15672:15672"
- name: elasticsearch
group: search
family: rhel
publish:
- "9200:9200"
- name: monitoring
group: monitoring
family: debian
publish:
- "9090:9090"
- name: elasticsearch-logs
group: logging
family: rhel
publish:
- "9201:9200"
- name: kibana
group: logging
family: debian
publish:
- "5601:5601"
- name: logstash
group: logging
family: rhel
publish:
- "5044:5044"
- name: backup
group: backup
family: debian
publish:
- "22:22"

View File

@@ -1,88 +0,0 @@
---
# ПРЕСЕТ: Высокая доступность (6-10 машин)
#
# Описание: Кластер высокой доступности с репликацией и отказоустойчивостью
# - 2 веб-сервера (nginx) - активный/резервный
# - 2 базы данных (PostgreSQL) - мастер/слейв репликация
# - 2 кэш-сервера (Redis) - кластер с репликацией
# - 1 балансировщик (HAProxy) - с проверками здоровья
# - 1 мониторинг (Prometheus) - контроль состояния
# - 1 резервный мониторинг (Grafana) - визуализация
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/ha.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: haproxy
group: loadbalancers
family: rhel
publish:
- "80:80"
- "443:443"
- name: web1
group: webservers
family: debian
publish:
- "8081:80"
- name: web2
group: webservers
family: rhel
publish:
- "8082:80"
- name: db-master
group: databases
family: debian
publish:
- "5432:5432"
- name: db-slave
group: databases
family: rhel
publish:
- "5433:5432"
- name: cache1
group: caches
family: debian
publish:
- "6379:6379"
- name: cache2
group: caches
family: rhel
publish:
- "6380:6379"
- name: monitoring
group: monitoring
family: debian
publish:
- "9090:9090"
- name: grafana
group: monitoring
family: rhel
publish:
- "3000:3000"

View File

@@ -1,99 +0,0 @@
---
# ПРЕСЕТ: Kubernetes кластер (8-12 машин)
#
# Описание: Полноценный Kubernetes кластер с различными ролями
# - 3 master ноды (control-plane) - управление кластером
# - 3 worker ноды - выполнение workload
# - 1 etcd кластер (3 ноды) - хранение состояния
# - 1 ingress контроллер - маршрутизация трафика
# - 1 мониторинг (Prometheus) - метрики кластера
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-cluster.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: master1
group: masters
family: debian
publish:
- "6443:6443"
- name: master2
group: masters
family: rhel
publish:
- "6444:6443"
- name: master3
group: masters
family: debian
publish:
- "6445:6443"
- name: worker1
group: workers
family: rhel
publish:
- "30000:30000"
- name: worker2
group: workers
family: debian
publish:
- "30001:30000"
- name: worker3
group: workers
family: rhel
publish:
- "30002:30000"
- name: etcd1
group: etcd
family: debian
publish:
- "2379:2379"
- name: etcd2
group: etcd
family: rhel
publish:
- "2380:2379"
- name: etcd3
group: etcd
family: debian
publish:
- "2381:2379"
- name: ingress
group: ingress
family: rhel
publish:
- "80:80"
- "443:443"
- name: monitoring
group: monitoring
family: debian
publish:
- "9090:9090"

View File

@@ -1,55 +0,0 @@
---
# ПРЕСЕТ: Kubernetes + Istio Full Stack (1 кластер с полным стеком)
#
# Описание: Полноценный Kubernetes кластер с полным стеком Istio
# - 1 Kind кластер с 3 workers
# - Полный Istio service mesh с Kiali
# - Prometheus + Grafana для мониторинга
# - Jaeger для трассировки
# - Все аддоны включены
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-istio-full.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: istio-full
workers: 3
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
prometheus_stack: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"
- "9090:9090" # Prometheus
- "3000:3000" # Grafana
- "16686:16686" # Jaeger
- "20001:20001" # Kiali

View File

@@ -1,46 +0,0 @@
---
# Пресет для Kubernetes лаборатории с Kind кластерами
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
# Сеть для лаборатории
docker_network: labnet
# Kind кластеры
kind_clusters:
- name: lab
workers: 2
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
prometheus_stack: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
# Образы для разных семейств ОС
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
# Настройки по умолчанию для systemd контейнеров
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
# Определение хостов лаборатории (минимальный набор для k8s)
hosts:
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"

View File

@@ -1,81 +0,0 @@
---
# ПРЕСЕТ: Kubernetes Multi-Cluster (3 кластера)
#
# Описание: Несколько Kind кластеров для тестирования мульти-кластерных сценариев
# - 3 Kind кластера: dev, staging, prod
# - Различные конфигурации для каждого окружения
# - Полный стек мониторинга и service mesh
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-multi.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: dev
workers: 1
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
- name: staging
workers: 2
api_port: 6444
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
ingress_host_http_port: 8082
ingress_host_https_port: 8444
- name: prod
workers: 3
api_port: 6445
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
prometheus_stack: true
ingress_host_http_port: 8083
ingress_host_https_port: 8445
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: k8s-dev-controller
group: controllers
family: debian
publish:
- "6443:6443"
- name: k8s-staging-controller
group: controllers
family: rhel
publish:
- "6444:6444"
- name: k8s-prod-controller
group: controllers
family: debian
publish:
- "6445:6445"

View File

@@ -1,46 +0,0 @@
---
# ПРЕСЕТ: Kubernetes Single Node (1 кластер)
#
# Описание: Одиночный Kind кластер для простого тестирования K8s ролей
# - 1 Kind кластер с 1 worker
# - Базовые аддоны: Ingress NGINX, Metrics Server
# - Простая конфигурация для быстрого старта
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-single.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: single
workers: 1
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"

View File

@@ -1,181 +0,0 @@
---
# ПРЕСЕТ: Максимальный (20 машин)
#
# Описание: Максимально сложная инфраструктура для тестирования в экстремальных условиях
# - 2 Load Balancer (HAProxy) - балансировка
# - 3 Web сервера (nginx) - веб-слой
# - 2 API Gateway (Kong) - API управление
# - 3 Application сервера - бизнес-логика
# - 2 Database Master/Slave (PostgreSQL) - основная БД
# - 2 Cache сервера (Redis) - кэширование
# - 1 Message Queue (RabbitMQ) - очереди
# - 1 Search Engine (Elasticsearch) - поиск
# - 1 Monitoring (Prometheus) - метрики
# - 1 Logging (ELK Stack) - логи
# - 1 Tracing (Jaeger) - трассировка
# - 1 Visualization (Grafana) - визуализация
# - 1 Backup сервер - резервное копирование
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/maximum.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: lb1
group: loadbalancers
family: debian
publish:
- "80:80"
- "443:443"
- name: lb2
group: loadbalancers
family: rhel
publish:
- "8080:80"
- "8443:443"
- name: web1
group: webservers
family: rhel
publish:
- "8081:80"
- name: web2
group: webservers
family: debian
publish:
- "8082:80"
- name: web3
group: webservers
family: rhel
publish:
- "8083:80"
- name: api-gateway1
group: gateways
family: debian
publish:
- "8001:8000"
- name: api-gateway2
group: gateways
family: rhel
publish:
- "8002:8000"
- name: app1
group: applications
family: rhel
publish:
- "9001:9000"
- name: app2
group: applications
family: debian
publish:
- "9002:9000"
- name: app3
group: applications
family: rhel
publish:
- "9003:9000"
- name: db-master
group: databases
family: debian
publish:
- "5432:5432"
- name: db-slave
group: databases
family: rhel
publish:
- "5433:5432"
- name: cache1
group: caches
family: debian
publish:
- "6379:6379"
- name: cache2
group: caches
family: rhel
publish:
- "6380:6379"
- name: message-queue
group: queues
family: debian
publish:
- "5672:5672"
- "15672:15672"
- name: elasticsearch
group: search
family: rhel
publish:
- "9200:9200"
- name: monitoring
group: monitoring
family: debian
publish:
- "9090:9090"
- name: elasticsearch-logs
group: logging
family: rhel
publish:
- "9201:9200"
- name: kibana
group: logging
family: debian
publish:
- "5601:5601"
- name: logstash
group: logging
family: rhel
publish:
- "5044:5044"
- name: tracing
group: tracing
family: debian
publish:
- "16686:16686"
- name: grafana
group: visualization
family: rhel
publish:
- "3000:3000"
- name: backup
group: backup
family: debian
publish:
- "22:22"

View File

@@ -1,77 +0,0 @@
---
# ПРЕСЕТ: Микросервисы (5-8 машин)
#
# Описание: Архитектура микросервисов с разделением ответственности
# - 1 API Gateway (Kong/Nginx) - единая точка входа
# - 2 микросервиса (User Service, Order Service) - бизнес-логика
# - 1 база данных (PostgreSQL) - основная БД
# - 1 кэш (Redis) - для сессий
# - 1 очередь сообщений (RabbitMQ) - асинхронная обработка
# - 1 мониторинг (Prometheus) - метрики
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/microservices.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: api-gateway
group: gateways
family: rhel
publish:
- "80:80"
- "443:443"
- name: user-service
group: microservices
family: debian
publish:
- "8081:8080"
- name: order-service
group: microservices
family: rhel
publish:
- "8082:8080"
- name: database
group: databases
family: debian
publish:
- "5432:5432"
- name: cache
group: caches
family: rhel
publish:
- "6379:6379"
- name: message-queue
group: queues
family: debian
publish:
- "5672:5672"
- "15672:15672"
- name: monitoring
group: monitoring
family: rhel
publish:
- "9090:9090"

View File

@@ -1,48 +1,17 @@
---
# ПРЕСЕТ: Минимальная лаборатория (1-3 машины)
#
# Описание: Базовая конфигурация для простых тестов Ansible ролей
# - 1 контроллер (Debian)
# - 1 веб-сервер (RHEL)
# - 1 база данных (Debian)
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/minimal.yml
#
# Минимальный пресет лаборатории
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: controller
group: controllers
- name: host1
family: debian
publish:
- "8080:80"
groups: [all]
- name: webserver
group: webservers
family: rhel
publish:
- "80:80"
- name: database
group: databases
family: debian
publish:
- "5432:5432"
features:
docker: true
dind: false
k8s: false
istio: false
monitoring: false
chaos: false

View File

@@ -1,102 +0,0 @@
---
# ПРЕСЕТ: Mixed Full Stack (1 K8s + 2 DinD + 2 DOoD + 2 systemd)
#
# Описание: Полная смешанная конфигурация для комплексного тестирования
# - 1 Kind кластер с полным стеком
# - 2 DinD контейнера для изолированных сред
# - 2 DOoD контейнера для Docker операций
# - 2 systemd контейнера для системных ролей
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-full.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: full-stack
workers: 3
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
istio: true
kiali: true
prometheus_stack: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
# Kubernetes контроллер
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"
- "9090:9090" # Prometheus
- "3000:3000" # Grafana
- "16686:16686" # Jaeger
- "20001:20001" # Kiali
# DinD контейнеры
- name: dind-dev
type: dind
group: dind
publish:
- "2375:2375"
- "8080:8080"
- name: dind-prod
type: dind
group: dind
publish:
- "2376:2375"
- "8081:8080"
# DOoD контейнеры
- name: dood-web
type: dood
family: debian
group: dood
publish:
- "8082:80"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-api
type: dood
family: rhel
group: dood
publish:
- "8083:3000"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
# Systemd контейнеры
- name: systemd-monitor
family: rhel
group: monitoring
publish:
- "9091:9090"
- name: systemd-logs
family: debian
group: logging
publish:
- "5601:5601"

View File

@@ -1,69 +0,0 @@
---
# ПРЕСЕТ: Mixed Kubernetes + DinD (1 K8s + 3 DinD)
#
# Описание: Смешанная конфигурация Kubernetes и Docker-in-Docker
# - 1 Kind кластер для оркестрации
# - 3 DinD контейнера для изолированных Docker сред
# - Тестирование гибридных сценариев
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dind.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: hybrid
workers: 2
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
# Kubernetes контроллер
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"
# DinD контейнеры
- name: dind-dev
type: dind
group: dind
publish:
- "2375:2375"
- "8080:8080"
- name: dind-staging
type: dind
group: dind
publish:
- "2376:2375"
- "8081:8080"
- name: dind-prod
type: dind
group: dind
publish:
- "2377:2375"
- "8082:8080"

View File

@@ -1,75 +0,0 @@
---
# ПРЕСЕТ: Mixed Kubernetes + DOoD (1 K8s + 3 DOoD)
#
# Описание: Смешанная конфигурация Kubernetes и Docker-outside-of-Docker
# - 1 Kind кластер для оркестрации
# - 3 DOoD контейнера для Docker операций
# - Тестирование гибридных сценариев
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/mixed-k8s-dood.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
kind_clusters:
- name: hybrid
workers: 2
api_port: 6443
addons:
ingress_nginx: true
metrics_server: true
ingress_host_http_port: 8081
ingress_host_https_port: 8443
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
# Kubernetes контроллер
- name: k8s-controller
group: controllers
family: debian
publish:
- "6443:6443"
# DOoD контейнеры
- name: dood-web
type: dood
family: debian
group: dood
publish:
- "8080:80"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-api
type: dood
family: rhel
group: dood
publish:
- "8081:3000"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"
- name: dood-db
type: dood
family: debian
group: dood
publish:
- "8082:5432"
env:
DOCKER_HOST: "unix:///var/run/docker.sock"

View File

@@ -1,135 +0,0 @@
---
# ПРЕСЕТ: Service Mesh (15-20 машин)
#
# Описание: Полноценный service mesh с Istio и множественными сервисами
# - 1 Istio Control Plane - управление mesh
# - 1 Istio Ingress Gateway - входная точка
# - 1 Istio Egress Gateway - выходная точка
# - 3 Frontend сервиса - пользовательский интерфейс
# - 3 Backend API сервиса - бизнес-логика
# - 2 Database сервиса - хранение данных
# - 1 Cache сервис - кэширование
# - 1 Message Queue - асинхронная обработка
# - 1 Monitoring (Prometheus) - метрики mesh
# - 1 Tracing (Jaeger) - трассировка запросов
# - 1 Visualization (Kiali) - визуализация mesh
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/servicemesh.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: istio-control
group: istio
family: debian
publish:
- "15010:15010"
- name: istio-ingress
group: istio
family: rhel
publish:
- "80:80"
- "443:443"
- name: istio-egress
group: istio
family: debian
publish:
- "15443:15443"
- name: frontend1
group: frontend
family: rhel
publish:
- "3001:3000"
- name: frontend2
group: frontend
family: debian
publish:
- "3002:3000"
- name: frontend3
group: frontend
family: rhel
publish:
- "3003:3000"
- name: api1
group: backend
family: debian
publish:
- "8001:8000"
- name: api2
group: backend
family: rhel
publish:
- "8002:8000"
- name: api3
group: backend
family: debian
publish:
- "8003:8000"
- name: database1
group: databases
family: rhel
publish:
- "5432:5432"
- name: database2
group: databases
family: debian
publish:
- "5433:5432"
- name: cache
group: caches
family: rhel
publish:
- "6379:6379"
- name: message-queue
group: queues
family: debian
publish:
- "5672:5672"
- name: monitoring
group: monitoring
family: rhel
publish:
- "9090:9090"
- name: tracing
group: tracing
family: debian
publish:
- "16686:16686"
- name: kiali
group: visualization
family: rhel
publish:
- "20001:20001"

View File

@@ -1,62 +0,0 @@
---
# ПРЕСЕТ: Веб-приложение (3-5 машин)
#
# Описание: Классическая архитектура веб-приложения
# - 2 веб-сервера (nginx/apache) - балансировка нагрузки
# - 1 база данных (PostgreSQL) - основная БД
# - 1 кэш-сервер (Redis) - для сессий и кэширования
# - 1 обратный прокси (HAProxy) - балансировщик
#
# Использование: make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/webapp.yml
#
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
docker_network: labnet
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
hosts:
- name: haproxy
group: loadbalancers
family: rhel
publish:
- "80:80"
- "443:443"
- name: web1
group: webservers
family: debian
publish:
- "8081:80"
- name: web2
group: webservers
family: rhel
publish:
- "8082:80"
- name: database
group: databases
family: debian
publish:
- "5432:5432"
- name: cache
group: caches
family: rhel
publish:
- "6379:6379"