feat: Добавлена универсальная лаборатория для тестирования Ansible ролей

- Создана структура molecule/universal/ с поддержкой DinD и DOoD
- Добавлена поддержка Kind кластеров для Kubernetes тестирования
- Интегрированы Helm charts (nginx, prometheus-stack)
- Добавлена поддержка Istio service mesh с Kiali
- Создан Makefile с lab-целями для управления лабораторией
- Добавлена поддержка Prometheus + Grafana с автопровижинингом
- Создан README с подробной документацией

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-10-22 13:01:53 +03:00
parent deebf78047
commit b4881da7c5
14 changed files with 1051 additions and 12 deletions

View File

@@ -0,0 +1,90 @@
---
# Конфигурация универсальной лаборатории
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
# Сеть для лаборатории
docker_network: labnet
# Образы для разных семейств ОС
images:
debian: "ghcr.io/ansible-community/molecule-ubuntu-systemd:jammy"
rhel: "quay.io/centos/centos:stream9-systemd"
# Можно использовать собственные образы
# debian: "inecs/ansible:ubuntu"
# rhel: "inecs/ansible:centos"
# Настройки по умолчанию для systemd контейнеров
systemd_defaults:
privileged: true
command: "/sbin/init"
volumes:
- "/sys/fs/cgroup:/sys/fs/cgroup:ro"
tmpfs:
- "/run"
- "/run/lock"
capabilities:
- "SYS_ADMIN"
# Определение хостов лаборатории
hosts:
# Пример: etcd кластер
- name: etcd1
group: etcd
family: debian
- name: etcd2
group: etcd
family: debian
- name: etcd3
group: etcd
family: debian
# Пример: PostgreSQL с Patroni
- name: patroni1
group: patroni
family: rhel
- name: patroni2
group: patroni
family: rhel
- name: patroni3
group: patroni
family: rhel
# Пример: HAProxy
- name: haproxy
group: haproxy
family: rhel
publish:
- "5000:5000" # RW порт
- "5001:5001" # RO порт
# Пример: DinD узел для изоляции
- name: app-dind
group: apps
type: dind
publish:
- "8080:8080"
# Пример: DOoD узел (Docker Outside of Docker)
- name: app-dood
group: apps
type: dood
publish:
- "8081:8081"
# 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
# Пути для файлов
generated_inventory: "${MOLECULE_EPHEMERAL_DIRECTORY}/inventory/hosts.ini"