crumbcollector — der rostige Sammler 🦀🛸

Raw statt setup. Rust neben Python. Lesen vor Schreiben. Fragen vor Import.
— netbox_migration_workflow.md

Control-Node-Binary fĂźr die Erstmigration alter RZ-Nodes in die
CrumbForest NetBox. Durch die Null gebaut — keine Ansible-Abhängigkeit, kein
managed CRON, kein Dual-Use. Gedacht fĂźr den Jetson als Sammler: genauso alt
wie die Bäume, Wurzeln und Verbindungen, die er liest. #rust

Die fĂźnf Kanten

# Schritt Modul
1 SSH-Key-Login ßber die Netzmaske (verschiedene Ports) net ¡ ssh
2 Oldschool-Facts über OS/Versionen — raw statt setup probe
3 Durch die Null: roh → NetBox-Gestalt, Ursprung bleibt unangetastet transform
4 Geordneter 3-Pass-Import, REST statt Ansible, Fragen vor Import sink
5 Alles doppelt loggen — JSONL + crew-Markdown log

Passkante als Code

Die classify_nodes.py-Logik ist ein typisierter Enum
(classify::NodeClass):

  • is_virtual == false und echte PVE-Version → PveCluster → Pass 1
  • is_virtual == true → Vm → Pass 2
  • Rest → BareMetal → Pass 3

Reihenfolge zählt und ist getestet (cargo test).

Kompatibilität mit der Ansible-Altwelt

model::raw::RawNode spiegelt das consolidated_payload
aus serverfacts_v5.yml — der Sammler liest bestehende inventar/*_v4.json
und schreibt dieselbe Form. Rust neben Python, wĂśrtlich.

Stand

Schnitt 1 — Scaffold + Datenmodell. Modell steht, Kanten sind signiert und
mit todo!() markiert. Nichts fährt live gegen echte Nodes oder NetBox.

cargo test    # Passkanten-Klassifizierung ist schon grĂźn
cargo run     # zeigt die Pipeline-Übersicht

Nächste Schnitte: net/ssh (russh, ipnet) ¡ probe (Parser) ¡
transform (Umrechnungen) ¡ sink (reqwest) ¡ log (Writer).


Teil von crumbforest.io (OZM gGmbH Hamburg). Kinder dĂźrfen niemals
ausgeschlossen werden. 🚫 kein Dual-Use · 🛸 Wuhuuu = Freude