REDUNDANZ_M4 — der M4 wird ein zweiter Steuerknoten
Ziel: der M4-Laptop wird eine redundante Ansiblekatze — ein zweiter Control-Node
neben dem Mac. Failover, nicht Gleichzeitigkeit. Gitea ist der gemeinsame SOT, aus
dem beide klonen und zu dem beide zurückspiegeln.
OZMAI baut die rostige Tür, der Wald den rostigen Schlüssel — wir haben alle
Puzzleteile am Start. Fokus aufs Neue: #rust #core #client.
Grundregel: aus Gitea neu aufbauen, NICHT 1:1 kopieren
Das Repo ist die Wahrheit. Ein frischer Clone gibt den kanonischen, sauberen Stand.
Eine 1:1-Kopie schleppt genau das mit, was nicht dupliziert werden soll: untracked
Müll (.DS_Store, venv/, __pycache__, .claude/worktrees/, .bak-Leichen),
lokalen uncommitteten Drift (sähe auf dem M4 aus wie Wahrheit, ist aber WIP), und
große abgeleitete Artefakte (kommen per pip/Render neu).
1. Code klonen (an denselben absoluten Pfad!)
cd ~ # so, dass ~/Ansible-Crumbforest und ~/mondgeschichten entstehen
git clone https://git.crumbforest.org/branko/Ansible-Crumbforest.git
git clone https://git.crumbforest.org/branko/mondgeschichten.git
# optional, je nach Rolle des M4:
# git clone <gitea>/branko/crumb-missions-core.git
Der absolute Pfad muss passen, weil das Claude-Gedächtnis pfad-gebunden ist
(siehe Punkt 3).
2. venvs frisch bauen (nicht kopieren)
cd ~/mondgeschichten && python3 -m venv venv && ./venv/bin/pip install -r requirements.txt # falls vorhanden
3. Was NICHT in Gitea liegt — die eigentliche Redundanz-Arbeit
- Claude-Gedächtnis —
~/.claude/projects/-Users-<user>-Ansible-Crumbforest/memory/.
Macht den M4 erst zu einer Kopie von mir. Pfad-gebunden: klont der M4 das Repo an
denselben absoluten Pfad, passt der Memory-Pfad automatisch. Separat synchronisieren
(offener „memory-Sync"-Faden). Sonst zeigt das Gedächtnis ins Leere. - SSH-Keys — M4 hat backbone + nullfeld, ist im VPN/NetBox. Prüfen, dass die
Key-Pfade stimmen, dieinventory.inierwartet:
~/.ssh/crumbforest_spirale,~/.ssh/id_ed25519_nullfeld,~/.ssh/crumbforest_backbone. - Secrets außerhalb Git — NetBox-Token (steckt im export-Schnipsel, 403-Falle),
evtl. Vault/.env. Gehören nicht ins Repo, müssen sicher rüber. - NAS-Sample-Libs — bleiben auf dem NAS (lokal serviert), nicht kopieren.
4. Beweis, dass die Redundanz echt ist (read-only)
Bekommt der M4 hier changed=0, ist er ein echter redundanter Steuerknoten:
cd ~/Ansible-Crumbforest
ansible-playbook playbooks/nginx-nullfeld.yml --check --diff --limit nullfeld
ansible-playbook playbooks/netbox_sync.yml --check --diff
5. Zwei Steuerknoten — Failover, nicht Gleichzeitigkeit
Nicht beide gleichzeitig die Flotte treiben (sonst Drift gegeneinander — „welche Kiste
ist ahead"). Vor einem echten Lauf immer erst git fetch + --check --diff. Gitea
konvergiert beide.
Ausblick
- opuskatze im Container wird langfristig eine HA-/Checkmk-Instanz
(#habitatassistence) — Habitat-Assistenz, die Erreichbarkeit/Last/Zustand wacht.
Checkmk sieht heute nur den Strato-Cluster; Baumhaus-/Container-Nodes kämen über
doktor.yml/ninja dazu, kein WG-Umbau. - Fokus bleibt vorn: #rust #core #client — der M4 als Redundanz sichert die Basis,
damit am Neuen gebaut werden kann.