TP21: routers.yaml auf finale MGMT-IPs aktualisiert; Sub-TP21.1 CRS326-Branch-Recovery dokumentiert; Nautobot-Image procps-Fix

- mcp/mikromcp/config/routers.yaml: ap1→10.40.99.11, ap2→10.40.99.12,
  crs326-core→10.40.99.1, crs326-branch→10.40.99.2 (tags aktualisiert).
- docs/teilprojekte.md: TP21.1 angelegt — Branch nach Reboot/Lockout recovery.
- docs/nas-vlan20/nautobot-image/Dockerfile: procps installiert (healthcheck).

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-08-08 11:40:20 +02:00
parent 7ffb22de97
commit 30301d40e2
3 changed files with 24 additions and 19 deletions

View File

@@ -13,6 +13,7 @@
FROM ghcr.io/nautobot/nautobot:3.1.7
USER root
RUN apt-get update && apt-get install -y --no-install-recommends procps && rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir \
nautobot-golden-config \
nautobot-plugin-nornir \

View File

@@ -548,6 +548,14 @@ FT kaschierte das bisher als „Roaming" statt „schwache Abdeckung".
- **Offen:** ap1/ap2/crs326-Adoption + Compliance-Push (RouterOS-API); RouterOS-Nornir-Dispatcher falls nötig; Branch-Renumber `.13→.12` und AP-Mgmt-IP-Fix in Datenmodell beim Cutover; Secret-Handling für WG-Privkey in Nautobot/Nornir klären (aktuell lokale Injektion).
- Abh.: **TP20** (Postgres muss stehen), Gitea ✅, RouterOS-Router (ap1/ap2, dauerhaft).
### TP21.1 — CRS326-Branch Recovery nach Lockout ▸ 🔴 OFFEN (2026-08-08)
- **Auslöser:** während TP21-Passwort-Umstellung ist `crs326-branch` (10.40.99.13 / geplant .99.2) management-unerreichbar geworden. Ping und MAC-Winbox-Connect (MNDP/Winbox Layer2) schlagen fehl. Der Switch leitet aber weiterhin Traffic weiter (NAS VLAN20 erreichbar).
- **Hypothese:** nach einem Reboot sind alle Ports wieder `disabled=yes` (bekanntes Muster aus dem Branch-Bring-up 2026-07-23 — Disable-Regex erfasste die gewünschten Ports nicht korrekt) **oder** die Management-IP/VLAN-Konfiguration wurde überschrieben.
- **Rettungspfad:** physischer Reset auf Werkseinstellungen (`192.168.88.1/24`) über Reset-Taster, dann Bring-up von Hand wiederholen. Dabei ist der Branch-Bring-up-Stand aus `docs/tp15-crs326-session-handoff-prompt.md`/`nautobot/ingest-crs326-ports.py` maßgeblich.
- **Kritikalität:** HOCH — am Branch hängen NAS, Sonos (Media), Drucker, Dock, Mac mini, ap2. Während des Recoveries kein VLAN20/30/40/50/90/99-Zugang über diesen Pfad.
- **Abhängigkeit:** User muss physisch am Gerät sein (Console/Winbox-MAC/Reset). TP21-Weiterarbeit an MikroTik-Geräten blockiert bis der Branch wieder management-erreichbar ist.
- **Nächster Schritt (Session-Neustart):** Reset → Grundkonfiguration Bridge+VLAN-Filtering+Uplink-Trunk → Mgmt-IP `.99.13` wiederherstellen → Portbelegung 1:1 aus TP15-Bring-up nachziehen → dann erst weiter mit TP21-Passwort-Rotation + AP-Reprovisionierung.
### TP-R — Router-Capabilities-Sweep ▸ FERTIG (`docs/research/routeros-capabilities.md`)
- **Leitsatz: nativ vor Container, NAS vor Router** (128MB-Flash-Limit).
- **Sofort nativ (~0 RAM):** RoMON · Netwatch · Scheduler + Auto-Backup/Mail · SNMP→externes Monitoring · **mDNS-Repeater** · spectral-scan · **CAPsMAN + 802.11r/k/v (Fast-Roaming statt Mesh)** · Back-to-Home/WireGuard.

View File

@@ -1,40 +1,36 @@
# MikroMCP Router-Registry — BF hAP ax²
# MikroMCP Router-Registry — BF Netzwerk (final IPs, TP21)
# Credentials NICHT hier, sondern via ENV (envPrefix -> ROUTER_<PREFIX>_USER/PASS in .env).
# APs sprechen REST über PLAIN HTTP auf Port 80 (verifiziert: curl ...:80/rest funktioniert).
# -> tls.enabled: false (rest-client.ts: scheme = tls.enabled ? https : http)
# Sobald www-ssl auf den APs aktiv ist, auf port 443 + tls.enabled:true + fingerprint umstellen.
# Alle Geräte sprechen REST über PLAIN HTTP auf Port 80.
# -> tls.enabled: false (rest-client.ts: scheme = tls.enabled ? https : http)
# Änderungen hier werden erst nach MikroMCP-Neustart wirksam.
routers:
ap1:
host: "10.40.41.1"
host: "10.40.99.11"
port: 80
tls:
enabled: false
rejectUnauthorized: true # Pflichtfeld lt. Schema; ohne Wirkung bei enabled:false
rejectUnauthorized: true
credentials:
source: "env"
envPrefix: "ROUTER_AP1" # -> ROUTER_AP1_USER, ROUTER_AP1_PASS
tags: ["bf", "wifi", "capsman-manager", "future-router"]
envPrefix: "ROUTER_AP1"
tags: ["bf", "wifi", "access-point"]
rosVersion: "7.23"
ap2:
host: "10.40.41.2"
host: "10.40.99.12"
port: 80
tls:
enabled: false
rejectUnauthorized: true # Pflichtfeld lt. Schema; ohne Wirkung bei enabled:false
rejectUnauthorized: true
credentials:
source: "env"
envPrefix: "ROUTER_AP2" # -> ROUTER_AP2_USER, ROUTER_AP2_PASS
tags: ["bf", "wifi", "cap"]
envPrefix: "ROUTER_AP2"
tags: ["bf", "wifi", "access-point"]
rosVersion: "7.23"
# --- TP15 CRS326-Bring-up (2026-07-23) ---
# Mgmt auf VLAN99. www=plain HTTP:80 (wie ap1/ap2) -> tls.enabled:false.
# ENV via ~/.secrets/exports.zsh: CRS326_CORE_USER/PASS, CRS326_BRANCH_USER/PASS.
# Wird erst nach MCP-Neustart (neue Session) live; diese Session Verify via direktem REST-curl.
crs326-core:
host: "10.40.41.211" # TEMP cutover mgmt IP until VLAN99 trunk through sw1 is live
host: "10.40.99.1"
port: 80
tls:
enabled: false
@@ -42,11 +38,11 @@ routers:
credentials:
source: "env"
envPrefix: "CRS326_CORE"
tags: ["bf", "switch", "core", "future-l3-router"]
tags: ["bf", "switch", "core", "l3-router"]
rosVersion: "7.19.5"
crs326-branch:
host: "10.40.99.13"
host: "10.40.99.2"
port: 80
tls:
enabled: false