- Seeder tp36-cf-estate-seed.py -> tp44-cf-estate-seed.py (+ Referenzen, Docstring) - teilprojekte.md: TP44 Quick-Index + Abschnitt (Anker), Ist-Stand 09-06, TP34/36/37 auf korrigierten Stand (TP37 P3 via TP44 erledigt; P1+2 offen) - Plan-Runbook handoff-20260906-tp37-34-36-plan.md (native Modelle, Compliance-Gegenprobe) - 09-02-Handoff + cf-tunnel-mapping: Referenzen/TODOs nachgezogen - TP23-Quick-Index-Zeile (fremde, korrekte Aenderung) auf User-Okay mit uebernommen Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.0 KiB
Handoff 2026-09-02 — CF-Estate als SSoT in Nautobot (TP44, Etappe 1)
Scope: die Cloudflare-Infrastruktur (Tunnel + App-Ebene) als strukturierte, abfragbare SSoT in Nautobot abbilden. Etappe 1 = manuelle Erstbefüllung über die nativen
nautobot.cloud-Modelle. Ausgelöst aus der DB-Pfad-Session (siehecf-tunnel-mapping.md§17).
Entscheidung (User, 2026-09-02)
- SSoT-Modus: Etappen — manuell jetzt, Sync später.
cf-tunnel-mapping.mdwird zum Snapshot/Zeiger. - Scope Etappe 1: volle CF-Estate (Tunnel + WARP-Connector + VPC-Service + Hyperdrive + Workers + alle Access-Apps).
- Grundsatz: Nautobot kann CF nicht steuern → „SSoT" = Dokumentations-SSoT. CF bleibt operativer Master.
Warum ein eigenes TP (TP44), nicht TP36
TP36 ist in teilprojekte.md eng auf teilprojekte.md-Live-Daten + Datei-Aufteilung geschnitten.
Dieselbe Idee (Nautobot als Doku-SSoT), aber andere Dimension → TP44 (nächste freie Nummer nach TP43).
Quick-Index-Zeile + TP-Abschnitt in teilprojekte.md sind noch offen (die Datei trug bei dieser
Session fremde, ungestagte Änderungen — bewusst nicht mit angefasst, um den Commit sauber zu halten).
Modell (Nautobot 3.1.7, App nautobot.cloud)
Manufacturer "Cloudflare"
└─ CloudAccount "Cloudflare" (account_number = 393c051f3accf51881d6c98fc5b66c36)
├─ CloudResourceType ×6
│ cloudflared Tunnel · WARP Connector → cloud.cloudnetwork
│ VPC Service · Hyperdrive · Worker · Access Application → cloud.cloudservice
├─ CloudNetwork ×4 bf-public · fm.emsenhuber.net · terpene-db · bf-core-mesh
└─ CloudService ×14 VPC terpene-db · Hyperdrive terpene(ro)+terpene-rw ·
Worker terpene+blaueblueten-n8n · 9× Access-App
- IDs/Ports/Hostnames/Origins liegen je Objekt in
extra_config(JSON). - Service↔Tunnel-Verknüpfung über das Through-Modell
cloud-service-network-assignments(3 Rows):terpene-db↔terpene-db,*.emsenhuber.net↔bf-public,hass, vw, gitea↔bf-public. - Prefix-Routen (
10.40.0.0/16bf-core-mesh,10.101.0.0/24fm) sind nicht alscloud-network-prefix-assignmentsgesetzt, weil die Prefixe nicht in IPAM existieren → inextra_config.routebelassen (best-effort im Seeder, greift automatisch, sobald die Prefixe in IPAM sind).
Werkzeug
nautobot/tp44-cf-estate-seed.py — idempotenter Seeder (get-or-create), Datenstand als Inline-Struktur.
Token aus docs/nas-vlan20/stacks/210-nautobot.yml (gitignored). Aufruf: Dry-Run default,
--commit schreibt. Re-Run = 26/26 „existiert".
(Datei am 2026-09-06 von tp36-… auf tp44-cf-estate-seed.py umbenannt — Präfix jetzt korrekt.)
Gotchas (für Etappe 2 / Folgesessions)
- 🔴
CloudService.cloud_networksist im Serializerread_onlyund bleibt bei GET leer — die Verknüpfung wird ausschließlich übercloud-service-network-assignmentsgeschrieben UND gelesen. Nicht am leeren Convenience-Feld verzweifeln; die Through-Rows sind die Wahrheit. - VPC-Service-API liegt unter
connectivity/directory/services(Update = PUT, voller Body), nicht/vpc/. - Der Repo-
CF_API_TOKENdarfcfd_tunnel, aber nicht Workers-VPC (connectivity/directory) — dort über dencloudflare-MCP-Credential gehen.
Offen (Etappe 2, eigene Session)
- CF-API→Nautobot-Sync (Python/n8n): Inline-Daten im Seeder durch Live-Pull ersetzen, periodisch (analog golden-config-bot). Dann ist Nautobot driftfrei.
- ✅ TP44 in
teilprojekte.mdeingetragen (Quick-Index + Abschnitt + Ist-Stand) — 2026-09-06. - IPAM-Prefixe
10.40.0.0/16+10.101.0.0/24anlegen → dann greifen die Prefix-Assignments automatisch. - ✅ Seeder-Datei nach
tp44-cf-estate-seed.pyumbenannt — 2026-09-06.
Verifikation (2026-09-02)
Counts: CloudAccount 1 · ResourceType 6 · CloudNetwork 4 · CloudService 14 · Service-Network-Assignments 3. Idempotenz-Gegenprobe grün.