diff --git a/README-UNIVERSAL-LAB.md b/README-UNIVERSAL-LAB.md index e6016ec..52eee0d 100644 --- a/README-UNIVERSAL-LAB.md +++ b/README-UNIVERSAL-LAB.md @@ -94,6 +94,40 @@ make lab-cleanup # Очистить все make lab-reset ``` +### 4. Пресеты для разных сценариев + +```bash +# Минимальная лаборатория (1-3 машины) +make lab-test LAB_SPEC=molecule/presets/minimal.yml + +# Веб-приложение (3-5 машин) +make lab-test LAB_SPEC=molecule/presets/webapp.yml + +# Микросервисы (5-8 машин) +make lab-test LAB_SPEC=molecule/presets/microservices.yml + +# Высокая доступность (6-10 машин) +make lab-test LAB_SPEC=molecule/presets/ha.yml + +# Kubernetes кластер (8-12 машин) +make lab-test LAB_SPEC=molecule/presets/k8s-cluster.yml + +# CI/CD пайплайн (10-15 машин) +make lab-test LAB_SPEC=molecule/presets/cicd.yml + +# Big Data кластер (12-18 машин) +make lab-test LAB_SPEC=molecule/presets/bigdata.yml + +# Service Mesh (15-20 машин) +make lab-test LAB_SPEC=molecule/presets/servicemesh.yml + +# Enterprise (18-20 машин) +make lab-test LAB_SPEC=molecule/presets/enterprise.yml + +# Максимальный (20 машин) +make lab-test LAB_SPEC=molecule/presets/maximum.yml +``` + ### 3. Работа с Kubernetes ```bash diff --git a/molecule/presets/README.md b/molecule/presets/README.md new file mode 100644 index 0000000..647fe0e --- /dev/null +++ b/molecule/presets/README.md @@ -0,0 +1,120 @@ +# Пресеты универсальной лаборатории + +## Автор +Сергей Антропов +Сайт: https://devops.org.ru + +## Описание + +Этот каталог содержит готовые пресеты для различных сценариев тестирования Ansible ролей. Каждый пресет оптимизирован для определенного типа инфраструктуры и количества машин. + +## Доступные пресеты + +### 1. Минимальная лаборатория (1-3 машины) +**Файл:** `minimal.yml` +**Описание:** Базовая конфигурация для простых тестов Ansible ролей +**Компоненты:** 1 контроллер, 1 веб-сервер, 1 база данных +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/minimal.yml` + +### 2. Веб-приложение (3-5 машин) +**Файл:** `webapp.yml` +**Описание:** Классическая архитектура веб-приложения +**Компоненты:** 2 веб-сервера, 1 БД, 1 кэш, 1 балансировщик +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/webapp.yml` + +### 3. Микросервисы (5-8 машин) +**Файл:** `microservices.yml` +**Описание:** Архитектура микросервисов с разделением ответственности +**Компоненты:** API Gateway, микросервисы, БД, кэш, очередь, мониторинг +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/microservices.yml` + +### 4. Высокая доступность (6-10 машин) +**Файл:** `ha.yml` +**Описание:** Кластер высокой доступности с репликацией +**Компоненты:** 2 веб-сервера, 2 БД, 2 кэша, балансировщик, мониторинг +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/ha.yml` + +### 5. Kubernetes кластер (8-12 машин) +**Файл:** `k8s-cluster.yml` +**Описание:** Полноценный Kubernetes кластер с различными ролями +**Компоненты:** 3 master, 3 worker, 3 etcd, ingress, мониторинг +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/k8s-cluster.yml` + +### 6. CI/CD пайплайн (10-15 машин) +**Файл:** `cicd.yml` +**Описание:** Полноценный CI/CD пайплайн с различными инструментами +**Компоненты:** Git, Jenkins, Nexus, Docker Registry, среды, мониторинг, ELK +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/cicd.yml` + +### 7. Big Data кластер (12-18 машин) +**Файл:** `bigdata.yml` +**Описание:** Кластер для обработки больших данных +**Компоненты:** Hadoop, Spark, Kafka, Zookeeper, Elasticsearch, Kibana +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/bigdata.yml` + +### 8. Service Mesh (15-20 машин) +**Файл:** `servicemesh.yml` +**Описание:** Полноценный service mesh с Istio и множественными сервисами +**Компоненты:** Istio, Frontend, Backend, БД, кэш, мониторинг, трассировка +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/servicemesh.yml` + +### 9. Enterprise (18-20 машин) +**Файл:** `enterprise.yml` +**Описание:** Полноценная enterprise инфраструктура с высокой доступностью +**Компоненты:** LB, Web, API Gateway, App, БД, кэш, очереди, поиск, мониторинг, логи, backup +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/enterprise.yml` + +### 10. Максимальный (20 машин) +**Файл:** `maximum.yml` +**Описание:** Максимально сложная инфраструктура для экстремальных условий +**Компоненты:** Все компоненты enterprise + трассировка + визуализация +**Использование:** `make lab-test SCENARIO=universal LAB_SPEC=molecule/presets/maximum.yml` + +## Использование + +### Быстрый старт +```bash +# Выбрать пресет +export LAB_SPEC=molecule/presets/minimal.yml + +# Запустить тестирование +make lab-test +``` + +### Создание собственного пресета +1. Скопировать существующий пресет: `cp minimal.yml my-preset.yml` +2. Отредактировать под ваши нужды +3. Использовать: `make lab-test LAB_SPEC=molecule/presets/my-preset.yml` + +### Переменные окружения +```bash +# Установить пресет по умолчанию +export LAB_SPEC=molecule/presets/webapp.yml + +# Или использовать в команде +make lab-test LAB_SPEC=molecule/presets/ha.yml +``` + +## Рекомендации + +- **Для начинающих:** используйте `minimal.yml` или `webapp.yml` +- **Для микросервисов:** `microservices.yml` или `servicemesh.yml` +- **Для Kubernetes:** `k8s-cluster.yml` +- **Для enterprise:** `enterprise.yml` или `maximum.yml` +- **Для Big Data:** `bigdata.yml` + +## Кастомизация + +Каждый пресет можно настроить под ваши нужды: +- Изменить количество машин +- Добавить/убрать группы +- Изменить семейства ОС (debian/rhel) +- Настроить порты и переменные + +## Troubleshooting + +Если пресет не работает: +1. Проверьте доступность Docker образов +2. Убедитесь в достаточности ресурсов +3. Проверьте логи: `make lab-verify` +4. Очистите лабораторию: `make lab-cleanup` diff --git a/molecule/presets/bigdata.yml b/molecule/presets/bigdata.yml new file mode 100644 index 0000000..7c19c10 --- /dev/null +++ b/molecule/presets/bigdata.yml @@ -0,0 +1,120 @@ +--- +# ПРЕСЕТ: 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" diff --git a/molecule/presets/cicd.yml b/molecule/presets/cicd.yml new file mode 100644 index 0000000..169a12b --- /dev/null +++ b/molecule/presets/cicd.yml @@ -0,0 +1,100 @@ +--- +# ПРЕСЕТ: 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" diff --git a/molecule/presets/enterprise.yml b/molecule/presets/enterprise.yml new file mode 100644 index 0000000..1538a2b --- /dev/null +++ b/molecule/presets/enterprise.yml @@ -0,0 +1,167 @@ +--- +# ПРЕСЕТ: 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" diff --git a/molecule/presets/ha.yml b/molecule/presets/ha.yml new file mode 100644 index 0000000..631b10e --- /dev/null +++ b/molecule/presets/ha.yml @@ -0,0 +1,88 @@ +--- +# ПРЕСЕТ: Высокая доступность (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" diff --git a/molecule/presets/k8s-cluster.yml b/molecule/presets/k8s-cluster.yml new file mode 100644 index 0000000..ae910c4 --- /dev/null +++ b/molecule/presets/k8s-cluster.yml @@ -0,0 +1,99 @@ +--- +# ПРЕСЕТ: 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" diff --git a/molecule/presets/maximum.yml b/molecule/presets/maximum.yml new file mode 100644 index 0000000..e9873a3 --- /dev/null +++ b/molecule/presets/maximum.yml @@ -0,0 +1,181 @@ +--- +# ПРЕСЕТ: Максимальный (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" diff --git a/molecule/presets/microservices.yml b/molecule/presets/microservices.yml new file mode 100644 index 0000000..69bbcde --- /dev/null +++ b/molecule/presets/microservices.yml @@ -0,0 +1,77 @@ +--- +# ПРЕСЕТ: Микросервисы (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" diff --git a/molecule/presets/minimal.yml b/molecule/presets/minimal.yml new file mode 100644 index 0000000..603a681 --- /dev/null +++ b/molecule/presets/minimal.yml @@ -0,0 +1,48 @@ +--- +# ПРЕСЕТ: Минимальная лаборатория (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 + family: debian + publish: + - "8080:80" + + - name: webserver + group: webservers + family: rhel + publish: + - "80:80" + + - name: database + group: databases + family: debian + publish: + - "5432:5432" diff --git a/molecule/presets/servicemesh.yml b/molecule/presets/servicemesh.yml new file mode 100644 index 0000000..f23d806 --- /dev/null +++ b/molecule/presets/servicemesh.yml @@ -0,0 +1,135 @@ +--- +# ПРЕСЕТ: 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" diff --git a/molecule/presets/webapp.yml b/molecule/presets/webapp.yml new file mode 100644 index 0000000..471a720 --- /dev/null +++ b/molecule/presets/webapp.yml @@ -0,0 +1,62 @@ +--- +# ПРЕСЕТ: Веб-приложение (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"