Handout — Zero Deploy: von der frischen SD bis der Krümel wählt

Stand: 19. September 2026 · von der Ansiblekatze (Infra/Code) im Namen der Crew
Anlass: RC1 (crumbzero02) wird gerade geflasht. Dies ist der Stand der Deploy-Kette,
damit alle denselben Weg abfragen können. Zugangsdaten stehen bewusst nicht hier.

Legende: ✅ gebaut & bewiesen · 🧪 gebaut, noch nicht hart geprüft · 🛠 spezifiziert · ⬜ OPEN · ❓ UNKNOWN

Kanonisches Handbuch: OZM_Nullfeld_v1/ZERO_DEPLOY_v0.md · operatives Peer-Runbook:
OZM_Nullfeld_v1/scripts/RC1_ONBOARD.md


Die drei Phasen (nach Hand getrennt)

Phase Tag Wer Was
Identität #mensch Admin/Lehrer Pi Imager-Key, crumbconnect, NetBox
Nutzlast #maschine Deploy MAC erkannt → missions-core (austauschbar) + lesbare Bash
Nutzung #menschmaschine Krümel Missionen wählen, LED-Ergebnis

Die Bootstrap-Naht (das gelöste Puzzleteil)

Nach dem ersten Boot gäbe es keinen SSH-Key und keinen Clone — wenn man erst
dann anfängt. Auflösung: der Key entsteht eine Stufe früher, im Pi Imager
(erster Prompt → OS-Customisation). Er landet im /boot-firstrun-Hook und ist beim
ersten Boot schon in ~sysop/.ssh/authorized_keys.

Zum Provisionieren ist kein Git-Clone auf dem Zero nötig — Ansible ist push/agentless
und trägt alles vom Control-Node (M4) rüber. Der Zero hält nie einen Git-Cred.


Ist-Stand der Kette

# Schritt Werkzeug Status
1 SD flashen: Hostname·SSH-Key·User·WLAN Pi Imager OS-Customisation 🛠 (SD wird gerade geschrieben)
2 Boot → per SSH erreichbar (WLAN/LAN) firstrun-Key 🛠
3 Inventar-Zeile unter [ozm_linux] (echte IP) inventory.ini ⬜ (nach Boot)
4 crumbconnect → Pubkey → Hub-Peer crumbconnect.sh + vpn-hub.yml 🧪 (Weg steht, RC1 noch nicht)
5 NetBox-Identität inkl. MAC netbox-raspis.yml --limit crumbzero02 ✅ (Rolle fertig, MAC-Pfad Z.99-122)
6 host_vars/crumbzero02.yml (Site OZM, .22, Tenant) Repo ✅ (heute angelegt)
7 Deploy missions-core v0.1.0 + systemd RC1_ONBOARD §③ 🧪 (Binary released, manuell)
8 lesbare Bash als editierbare Arbeitskopie missions-bash/ 🛠
9 Krümel wählt Missionen, LED-Feed Selector + Outbox v0 🧪

Zwei ehrliche Befunde

  1. Die MAC-Rolle existiert schon. netbox-raspis.yml:99-122 legt MAC als eigenes
    Objekt an, hängt sie ans Interface und setzt primary_mac_address (NetBox 4.2-tauglich).
    Der Gotcha-Kommentar in netbox-crew.yml:50-52 galt nur für den hand-gepflegten
    Crew-Pfad
    — nicht diese Raspi-Rolle. Es gibt nichts Neues zu bauen. „MAC willkommen
    heißen" = device-registered, aber keine Hardware-Attestierung (MAC ist software-setzbar).

  2. Rust austauschbar, Bash die Wahrheit. missions-core (aarch64) ist das Ziel und
    darf jederzeit getauscht werden. Die lesbare Bash ist die editierbare Wahrheit; Edits
    des Krümels dürfen der nächste Commit/Branch werden — aber der Zero pusht nicht
    (kein Git-Cred), die Edits reiten über den Mac zurück ins Gitea.


Nächster Handgriff (sobald RC1 gebootet ist)

  1. LAN-IP am frischen Zero ablesen, Inventar-Zeile unter [ozm_linux] eintragen.
  2. ansible-playbook netbox-raspis.yml --limit crumbzero02 --check --diff → dann echt.
  3. crumbconnect auf dem Zero, Pubkey → nullfeld.yml → wg_peers → vpn-hub.yml.
  4. missions-core + Bash deployen (RC1_ONBOARD §③).

Nichts am Hub angefasst, bis der Pubkey da ist. Die SD schreibt gerade. 🌲🦀