infra: Compose-Stack mit Monitoring, ohne LiteLLM (Task 5.2)
ci / test (push) Successful in 28s

- deploy/compose/infra: Dienst litellm entfernt (D4), Router auf LITELLM_BASE_URL
  (appsrv08, Port noch offen), alle Images gepinnt, Grafana und pve-exporter
  ohne Profile, node-exporter für den LXC, Zustand über KNASTER_STATE_DIR
- Prometheus: GPU-VMs per file_sd (node, gpu), Proxmox-Knoten per IP, infra-node
- Grafana: Datasource und Dashboards provisioniert (grafana.com 10347, 1860,
  14574 sowie knaster-Übersicht)
- Alertmanager: n8n-Receiver nur vorbereitet (auskommentiert)
- Ansible: Rollen infra-stack und gpu-exporters, Playbooks monitoring.yml und
  monitoring-targets.yml, Skript monitoring-targets.py (tofu output → file_sd)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Robert Rapp
2026-10-12 20:22:26 +02:00
co-authored by Claude Opus 5.5
parent fd48fd1c7f
commit bf7c137adf
22 changed files with 23101 additions and 66 deletions
@@ -0,0 +1,29 @@
# Compose-Stack im LXC infra (Task 5.2). Repo-Auszug und Zustand liegen getrennt:
# infra_repo_dir Kopie der nötigen Repo-Teile von ops (wird bei jedem Lauf abgeglichen, --delete)
# infra_state_dir .env (0600, Geheimnisse), secrets/, file_sd/ – nie im Repo, nie überschrieben
infra_repo_src: "{{ playbook_dir }}/../../../.."
infra_repo_dir: /opt/knaster/repo
infra_state_dir: /opt/knaster/infra
infra_compose_project: knaster-infra
infra_compose_file: "{{ infra_repo_dir }}/deploy/compose/infra/docker-compose.yml"
# Einstellungen in .env (keine Geheimnisse). Änderungen hier, nicht im Container.
infra_settings:
KNASTER_VERSION: dev
KNASTER_SITE: "{{ knaster_site }}"
KNASTER_STATE_DIR: "{{ infra_state_dir }}"
KNASTER_DRY_RUN: "true" # Global Constraint: erst nach einer Woche Beobachtung einzeln freischalten
KNASTER_CANARY_INTERVAL: "60"
# D4: LiteLLM mit PSE auf appsrv08. TODO (Nutzer, Task 6.3): Port ist dort noch nicht im LAN veröffentlicht.
LITELLM_BASE_URL: http://192.168.100.29:4000
# Geheimnisse: werden im Container einmalig mit `openssl rand -hex 24` erzeugt und danach nie geändert
# (Postgres- und Grafana-Admin-Passwort wirken nur bei der Erstinitialisierung).
infra_secrets: [POSTGRES_PASSWORD, KNASTER_API_TOKEN, GRAFANA_ADMIN_PASSWORD, GRAFANA_KIOSK_PASSWORD]
# Lese-Token monitoring@pve!prom (PVEAuditor) auf ops
infra_pve_exporter_env: /root/.config/knaster/pve-exporter.env
# file_sd: auf ops aus `tofu output -json gpu_vms` erzeugt (nicht im Repo)
infra_tofu_dir: "{{ playbook_dir }}/../../tofu"
infra_targets_dir: "{{ playbook_dir }}/../monitoring-targets.generated"