# 📦 ARCHIV — TP15/TP21.1 Core-Cutover (2026-08-06 … 2026-08-08) > **Dieses Verzeichnis ist Historie. Die Skripte sind ERLEDIGT und werden nicht mehr ausgeführt.** > Sie haben den Umzug des L3-Routers von **ap1** auf **`crs326-core`** begleitet — Backup davor, > Staged-Config einspielen, Restore als Rückweg. Der Cutover ist am **2026-08-08** durchgezogen; > seither ist `crs326-core` der produktive L3-Router und ap1 ein reiner CAP. > Archiviert am **2026-08-31** auf Christophs Entscheid. > Projektkonvention ist *fortschreiben statt löschen* — dieselbe wie bei [`switch/`](../../switch/README.md). ## 🔴 Warum sie nicht liegen bleiben durften, wo sie lagen Alle vier zeigten auf **Adressen, die es nicht mehr gibt** — und einer davon ist nicht harmlos kaputt, sondern **falsch**. Live geprüft am 2026-08-31: | Datei | Ziel-IP im Code | Realität | |---|---|---| | `apply-core-cutover-l3.py` | `10.40.41.211` | ❌ tot — das VLAN-Schema `10.40.41.x` ist seit **2026-08-27** abgeschafft | | `backup-core.py` | `10.40.41.211` | ❌ tot, dito | | `restore-core.py` | `192.168.88.1` | ❌ tot — Werks-Temp-Pfad; dazu ein hartkodierter Backup-Dateiname vom 2026-08-06 | | `backup-ap1.py` | `10.40.10.1` | 🔴 **antwortet — ist aber der CORE** (VLAN10-SVI, tcp/22 offen). ap1 ist seit dem Cutover `10.40.99.11`. | 🔑 **Die Merkregel aus `backup-ap1.py` ist die wichtigste Zeile in dieser Datei:** das Skript wäre **nicht** gescheitert. Es hätte den **Core** gesichert und die Datei `ap1-pre-core-cutover-*.backup` genannt. Wer so ein Backup Monate später zurückspielt, spielt eine **Core-Config auf einen AP**. Ein Skript, das still das falsche Gerät trifft, ist gefährlicher als eines, das gar nicht läuft — deshalb liegt es hier und nicht mehr neben den benutzbaren Werkzeugen. ## Was hier **nicht** mehr gilt | Datei | Status | |---|---| | `apply-core-cutover-l3.py` | ❌ nicht ausführen — tote IP; liest zudem `../tp15-core-cutover-intended.rsc`, das **gitignored** ist und durch den Verzeichniswechsel ohnehin nicht mehr gefunden würde | | `backup-core.py` | ❌ nicht ausführen — tote IP; schriebe seine Ausgabe jetzt in **dieses** Archivverzeichnis (`OUT_DIR = Path(__file__).parent`) | | `restore-core.py` | ❌ nicht ausführen — tote IP + Dateiname von 2026-08-06 | | `backup-ap1.py` | 🔴 **auf keinen Fall ausführen** — s. oben, es trifft das falsche Gerät | ⚠️ **Die Pfad-Nebenwirkungen des Verschiebens sind absichtlich nicht repariert.** Sie zu reparieren hieße, die Skripte wieder lauffähig zu machen — das ist genau *nicht* die Absicht. ## ✅ Was an ihnen trotzdem noch gepflegt wurde Am **2026-08-31** sind sie — vor dem Archivieren — von `sshpass -p ` auf **`SSHPASS`-Env + `sshpass -e`** umgestellt worden, zusammen mit `nautobot/gc-transaktion.py` und `../import-core-rsc.py`. Grund: `-p` schreibt das Passwort in `argv`, wo es in `ps` und jedem argv-Trace steht — so ist am **2026-08-22** das Core-Passwort verbrannt. **Auch Archiv-Code wird kopiert.** Wer hier ein Muster abschreibt, soll das richtige abschreiben. In `apply-core-cutover-l3.py` wurde dabei ein latenter Bug mitgefixt: `run_silent` griff auf ein `pw` zu, das in der Funktion gar nicht existierte — **jeder Fehlerfall endete in einem `NameError` statt in der gedachten Meldung.** ## Wo die Wahrheit heute steht - **Ist-Stand + TP-Steuerung:** [`docs/teilprojekte.md`](../../docs/teilprojekte.md) - **Config-Weg für Netzgeräte:** ausschließlich **Nautobot Golden Config** (TP21/TP22) — `nautobot/gc-configplan.py`, Teständerungen als Transaktion über `nautobot/gc-transaktion.py` - **Backup eines Geräts heute:** `/system backup save` direkt am Gerät (so ist am 2026-08-31 `pre-tp25-funde-ftoverds.backup` auf dem Core entstanden) — **kein** Skript nötig - **Aktuelle Adressen:** `crs326-core` `10.40.99.1` · `crs326-branch` `10.40.99.2` · ap1 `10.40.99.11` · ap2 `10.40.99.12` · ap3 `10.40.99.13` - **Interaktiv/Debug:** MikroMCP · **noch benutzbar geblieben:** [`../import-core-rsc.py`](../import-core-rsc.py) (generisch, aber ebenfalls mit totem Default-Host — `--host` mitgeben)