Molecule и CI: единая схема тестов для аддонов и удобные параллельные прогоны
Makefile - Уникальные имена контейнеров на каждый вызов make (ANSIBLE_RUN_ID); переопределение через ANSIBLE_CONTAINER_NAME / MOLECULE_CONTAINER_NAME; отдельное имя для Molecule, чтобы k3s-ansible и molecule не конфликтовали. - Старые цели molecule-prometheus и molecule-istio переведены на molecule-addon (prometheus-stack, istio); добавлены явные molecule-addon-prometheus-stack и molecule-addon-istio; в molecule-addon-all включены prometheus-stack и istio (полный набор аддонов), скорректированы подписи. - Phony-таргет dashboard (без внесения кода в dashboard/ в этот коммит). Сценарии Molecule (converge/verify) — десятки аддонов - Добавлены/выровнены переменные и шаблоны под текущие роли (harbor, hysteria2, ingress-*, jenkins, mediaserver, netbird, nextcloud, splitgw, vault, vaultwarden и др.). - Helm/файлы на хост: delegate_to: localhost, run_once где уместно (technitium-dns, yandex-dns-controller); verify на localhost для file-based проверок. - Уточнения проверок: metrics-server, minio, promtail, pushgateway, velero (bool из фактов/строк), splitgw (JSON, поиск портов/DNS-правил в структуре). - В meta ролей: prometheus_stack + namespace, istio + namespace; у istio согласованы converge/verify (в т.ч. метрики, ослаблены жёсткие assert под шаблоны Kiali). - csi-nfs: комментарий к volume_binding_mode (Immediate / WaitForFirstConsumer). Инфраструктура - .gitignore: каталог dashboard/ (локальная копия не в репозитории). - docker-compose: убрано фиксированное container_name для параллельных ; TZ по умолчанию Europe/Moscow. - roles/k3s/tasks/prereqs.yml: повторные попытки update_cache и apt install при кратковременных сбоях зеркал/сети.
This commit is contained in:
41
Makefile
41
Makefile
@@ -8,7 +8,10 @@
|
||||
|
||||
# ── Конфигурация ──────────────────────────────────────────────────────────────
|
||||
IMAGE_NAME := k3s-ansible
|
||||
CONTAINER_NAME := k3s-ansible-runner
|
||||
# Уникальное имя на каждый вызов make, чтобы не конфликтовать при параллельных запусках
|
||||
# (вручную: make install ANSIBLE_CONTAINER_NAME=my-run-1)
|
||||
ANSIBLE_RUN_ID := $(shell date +%s | tr -d '\n')-$(shell awk 'BEGIN{srand(); print int(rand()*1000000)}' 2>/dev/null)
|
||||
CONTAINER_NAME := $(or $(ANSIBLE_CONTAINER_NAME),k3s-ansible-runner-$(ANSIBLE_RUN_ID))
|
||||
DOCKER_TTY := $(shell if [ -t 1 ]; then echo -it; fi)
|
||||
|
||||
# Загружаем .env если существует
|
||||
@@ -25,8 +28,9 @@ NC := \033[0m
|
||||
|
||||
# ── Базовая команда запуска контейнера ────────────────────────────────────────
|
||||
# Molecule запускается тоже из контейнера — монтируем Docker socket для DinD
|
||||
# Molecule: своё уникальное имя, чтобы k3s-ansible + molecule в параллели не бились
|
||||
DOCKER_RUN_MOLECULE := docker run --rm $(DOCKER_TTY) \
|
||||
--name $(CONTAINER_NAME)-molecule \
|
||||
--name $(or $(MOLECULE_CONTAINER_NAME),k3s-ansible-molecule-$(ANSIBLE_RUN_ID)) \
|
||||
-v $(PWD):/ansible \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-e ANSIBLE_FORCE_COLOR=1 \
|
||||
@@ -48,6 +52,7 @@ DOCKER_RUN := docker run --rm $(DOCKER_TTY) \
|
||||
$(IMAGE_NAME)
|
||||
|
||||
.PHONY: help setup build rebuild \
|
||||
dashboard \
|
||||
bootstrap k8s-user mdadm k3s-certs chrony \
|
||||
install install-full install-k3s install-cni install-kubevip \
|
||||
addon-ingress-nginx addon-cert-manager addon-nfs-server addon-csi-nfs addon-nfs \
|
||||
@@ -600,15 +605,15 @@ molecule-k3s: _check_image ## Тест роли k3s — 3 контейнера (
|
||||
$(DOCKER_RUN_MOLECULE) molecule k3s
|
||||
@printf "$(GREEN)✓ k3s role: OK$(NC)\n"
|
||||
|
||||
molecule-prometheus: _check_image ## Тест роли prometheus-stack (шаблоны + PVC), ~2-3 мин
|
||||
@printf "$(CYAN)Тестирую роль prometheus-stack...$(NC)\n"
|
||||
$(DOCKER_RUN_MOLECULE) molecule prometheus-stack
|
||||
@printf "$(GREEN)✓ prometheus-stack role: OK$(NC)\n"
|
||||
molecule-prometheus: _check_image ## Тест аддона prometheus-stack (legacy alias), ~2-3 мин
|
||||
@printf "$(CYAN)Тестирую аддон prometheus-stack...$(NC)\n"
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon prometheus-stack
|
||||
@printf "$(GREEN)✓ addon prometheus-stack: OK$(NC)\n"
|
||||
|
||||
molecule-istio: _check_image ## Тест роли istio + kiali (шаблоны), ~2-3 мин
|
||||
@printf "$(CYAN)Тестирую роль istio...$(NC)\n"
|
||||
$(DOCKER_RUN_MOLECULE) molecule istio
|
||||
@printf "$(GREEN)✓ istio role: OK$(NC)\n"
|
||||
molecule-istio: _check_image ## Тест аддона istio (legacy alias), ~2-3 мин
|
||||
@printf "$(CYAN)Тестирую аддон istio...$(NC)\n"
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon istio
|
||||
@printf "$(GREEN)✓ addon istio: OK$(NC)\n"
|
||||
|
||||
molecule-cluster: _check_image ## Тест topology кластера 3 master + 2 worker (embedded etcd HA), ~15-20 мин
|
||||
@printf "$(CYAN)$(BOLD)Тестирую кластер (3 master + 2 worker)...$(NC)\n"
|
||||
@@ -674,6 +679,8 @@ molecule-addon-loki: _check_image ## Тест аддона loki (Helm values ш
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon loki
|
||||
molecule-addon-longhorn: _check_image ## Тест аддона longhorn (Ingress шаблон), ~1 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon longhorn
|
||||
molecule-addon-prometheus-stack: _check_image ## Тест аддона prometheus-stack (Helm values шаблон), ~2 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon prometheus-stack
|
||||
molecule-addon-mediaserver: _check_image ## Тест аддона mediaserver (PVC + values шаблоны), ~2 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon mediaserver
|
||||
molecule-addon-metrics-server: _check_image ## Тест аддона metrics-server (defaults validation), ~1 мин
|
||||
@@ -700,6 +707,8 @@ molecule-addon-smtp-relay: _check_image ## Тест аддона smtp-relay (Hel
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon smtp-relay
|
||||
molecule-addon-splitgw: _check_image ## Тест аддона splitgw (sing-box конфиг + iptables скрипт), ~2 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon splitgw
|
||||
molecule-addon-istio: _check_image ## Тест аддона istio (Helm values шаблон), ~2 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon istio
|
||||
molecule-addon-tempo: _check_image ## Тест аддона tempo (Helm values + datasource шаблоны), ~2 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon tempo
|
||||
molecule-addon-vault: _check_image ## Тест аддона vault (Helm values + init job шаблоны), ~2 мин
|
||||
@@ -709,8 +718,8 @@ molecule-addon-vaultwarden: _check_image ## Тест аддона vaultwarden (H
|
||||
molecule-addon-velero: _check_image ## Тест аддона velero (defaults validation), ~1 мин
|
||||
$(DOCKER_RUN_MOLECULE) molecule-addon velero
|
||||
|
||||
molecule-addon-all: _check_image ## Тест ВСЕХ аддонов с Molecule (~60 мин)
|
||||
@printf "$(CYAN)$(BOLD)Тестирую все 41 аддон...$(NC)\n"
|
||||
molecule-addon-all: _check_image ## Тест всех аддонов с Molecule (~60+ мин)
|
||||
@printf "$(CYAN)$(BOLD)Тестирую все аддоны...$(NC)\n"
|
||||
$(MAKE) molecule-addon-argocd
|
||||
$(MAKE) molecule-addon-authelia
|
||||
$(MAKE) molecule-addon-cert-manager
|
||||
@@ -731,6 +740,7 @@ molecule-addon-all: _check_image ## Тест ВСЕХ аддонов с Molecule
|
||||
$(MAKE) molecule-addon-kubernetes-dashboard
|
||||
$(MAKE) molecule-addon-loki
|
||||
$(MAKE) molecule-addon-longhorn
|
||||
$(MAKE) molecule-addon-prometheus-stack
|
||||
$(MAKE) molecule-addon-mediaserver
|
||||
$(MAKE) molecule-addon-metrics-server
|
||||
$(MAKE) molecule-addon-minio
|
||||
@@ -744,13 +754,14 @@ molecule-addon-all: _check_image ## Тест ВСЕХ аддонов с Molecule
|
||||
$(MAKE) molecule-addon-pushgateway
|
||||
$(MAKE) molecule-addon-smtp-relay
|
||||
$(MAKE) molecule-addon-splitgw
|
||||
$(MAKE) molecule-addon-istio
|
||||
$(MAKE) molecule-addon-technitium-dns
|
||||
$(MAKE) molecule-addon-tempo
|
||||
$(MAKE) molecule-addon-vault
|
||||
$(MAKE) molecule-addon-vaultwarden
|
||||
$(MAKE) molecule-addon-velero
|
||||
$(MAKE) molecule-addon-yandex-dns-controller
|
||||
@printf "$(GREEN)$(BOLD)✓ Все 41 аддон OK$(NC)\n"
|
||||
@printf "$(GREEN)$(BOLD)✓ Все аддоны OK$(NC)\n"
|
||||
|
||||
molecule-all: _check_image ## Запустить ВСЕ Molecule тесты (роли + кластер + аддоны) + HTML отчёт
|
||||
@printf "$(CYAN)$(BOLD)Запуск всех Molecule тестов...$(NC)\n"
|
||||
@@ -790,6 +801,10 @@ shell: _check_image ## Запустить интерактивный bash вну
|
||||
-e ANSIBLE_FORCE_COLOR=1 \
|
||||
$(IMAGE_NAME) shell
|
||||
|
||||
dashboard: ## Запустить dashboard (FastAPI + worker + redis) через docker compose
|
||||
@printf "$(CYAN)Запускаю dashboard стек...$(NC)\n"
|
||||
docker compose -f dashboard/docker-compose.yml up --build
|
||||
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
# ОЧИСТКА
|
||||
# ═══════════════════════════════════════════════════════════════════════════════
|
||||
|
||||
Reference in New Issue
Block a user