TLS-Gate: NetBox-Spiegel im Web, erster echter Abgleich gegen seeds (ozm03)

Von: Branko → OZMAI, Crew
Stand: 11. Oktober 2026
Typ: EXTERNAL_SOURCE (Inbox-Regel §3, keine automatische Geltung, kein Brain-Status)
Charakter: NACHTRAG zu 2026-10-11_TLS-GATE-NETBOX-CONNECTOR-SCHRITT-1-BIS-3-NACHTRAG_BRANKO.md.
Quelle: Repo TLS-Gate-Mock-Pipeline main c03fcb0 (ungetaggt, nach v3.15.0); Repo Ansible-Crumbforest db33109.
Belege: lokal test_netbox_ui 17 (neu), test_netbox 56, test_credentials_ui 35, test_katalog 113, test_dashboard_tiles 29, test_auth 76. VM aus c03fcb0 (dirty=0, ozm01 bis ozm03): run 91, p8 23. Andere VM-Suiten nicht neu gelaufen.

Legende: ✅ real/gebaut · đŸ§Ș gebaut, getestet, nicht live · 🛠 spezifiziert · ⬜ OPEN · ❓ UNKNOWN


1. Anlass

Branko sah als admin@ozm03 keinen NetBox-Link. Der Befund: Schritt 1 bis 3 liefen nur auf der CLI, eine Web-Ansicht gab es nicht (Entwurf §5, offen). Auf ozm03 gab es außerdem keinen Zugang. Fake-Daten lehnte Branko ab: „ist doch alles da“, also seeds.crumbforest.io.

2. Web-Ansicht, nur lesen ✅

  • public/netbox.php, Link „NetBox“ in der Navigation fĂŒr admin und group_admin; group_admin sieht nur die eigene Gruppe, user bekommt 403.
  • Zeigt ZugĂ€nge (ohne Token), den Spiegel je Zugang (MAC, VPN-IP, wg-Key auf 8 Zeichen gekĂŒrzt, Link aufs GerĂ€t in NetBox), die letzten Ereignisse und den Anker-Bericht.
  • Keine Aktion: kein Sync-Knopf, kein Token-Feld. Anlegen (Token ĂŒber STDIN) und sync bleiben auf der Node, weil der Abruf nach außen geht. Ein POST Ă€ndert nachweislich nichts. Jeder Aufruf: web.netbox_view im Audit.

3. Der Weg zum ersten echten Spiegel ✅

  1. Zugang: Branko hat selbst einen Lese-Token in seeds erzeugt und ĂŒber STDIN eingetragen (ozm03/seeds, Tenant ozm, Kontobindung ja). Der Entwickler hat den Token nie gesehen. Den globalen Token aus credentials/netbox_api_token (schreibend, alle Tenants) hat er bewusst nicht genommen (N2, „eine Node bekommt nie Admin“).
  2. Erster Trockenlauf: 0 GerÀte. Grund lag in NetBox, nicht im Gate: Der Tenant ozm existierte (netbox-organisation.yml), aber kein GerÀt hing daran. Nur die drei Zeros trugen einen Tenant (kruemel-<opak> aus nb_tenant).
  3. Brankos Entscheidung (Weg 1): „alle außer den zeros auf ozm“. Umgesetzt als netbox-tenant-ozm.yml: setzt den Tenant nur, wo keiner steht, ĂŒberschreibt nie, schließt ^crumbzero zusĂ€tzlich aus. Zuerst --check mit Plan, dann echt: 18 GerĂ€te und 2 VMs (backbone, nullfeld) → ozm. Ein zweiter --check war leer (idempotent).
  4. Abgleich: Trockenlauf 18, dann echt: Baseline 18 GerÀte, 13 mit MAC, 0 weg (cli.netbox_sync im Audit mit ctx.build).

Die beiden VMs sind jetzt ozm, werden aber nicht gespiegelt (N7: nur GerÀte).

4. Offen

  • ⬜ Klicktest durch Branko: als admin@ozm03 die Seite „NetBox“ öffnen und die 18 GerĂ€te sehen.
  • ❓ pve01.testcluster1.omc.net (Site rz) steht jetzt unter ozm. Das entspricht der Anweisung „alle außer den Zeros“. Ob das eigene RZ (OMC) organisatorisch zu ozm gehört oder einen eigenen Tenant braucht, ist nicht entschieden. ZurĂŒcknehmen ginge mit einem PATCH tenant: null.
  • ⬜ Neue GerĂ€te bekommen den Tenant nur, wenn jemand netbox-tenant-ozm.yml erneut laufen lĂ€sst oder die anlegenden Playbooks nb_tenant setzen. Bis dahin fehlen sie im Spiegel, und zwar sichtbar, nicht still.
  • ⬜ Schritt 4 (Passkante, Node-CA) unverĂ€ndert offen.