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:
143
Makefile
143
Makefile
@@ -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
|
||||
|
||||
# =============================================================================
|
||||
# ИНТЕРАКТИВНЫЕ МЕНЮ
|
||||
# =============================================================================
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user