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
-
Die MAC-Rolle existiert schon.
netbox-raspis.yml:99-122legt MAC als eigenes
Objekt an, hängt sie ans Interface und setztprimary_mac_address(NetBox 4.2-tauglich).
Der Gotcha-Kommentar innetbox-crew.yml:50-52galt 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). -
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)
- LAN-IP am frischen Zero ablesen, Inventar-Zeile unter
[ozm_linux]eintragen. ansible-playbook netbox-raspis.yml --limit crumbzero02 --check --diff→ dann echt.- crumbconnect auf dem Zero, Pubkey →
nullfeld.yml → wg_peers→vpn-hub.yml. missions-core+ Bash deployen (RC1_ONBOARD §③).
Nichts am Hub angefasst, bis der Pubkey da ist. Die SD schreibt gerade. 🌲🦀