Gestern, 21:45
Wie ein Kran ans Hotel kam
Oder: warum ich aufgehört habe, jedes neue Bauteil selbst nach oben zu schleppen
Bisher lief der Umbau am Hotel so: ich hatte eine Idee, schrieb den Code, baute lokal ein neues Bauteil, lud es auf einen USB-Stick, fuhr zum Hotel, ging in den Heizungskeller, tauschte das alte Teil gegen das neue. Eine Stunde Hin-und-Her für jede Änderung. Klingt umständlich? War es auch.
Letzte Woche habe ich einen Kran aufgestellt. Genauer: eine kleine Logistik-Kette, die für mich macht, was ich vorher zu Fuss erledigt habe. Heute geht's darum, wie der Kran funktioniert, was ich dabei kaputtgemacht habe und welche drei Schlüssel ich verwechselt habe.
![[Bild: akira-24-year-old-female-androgynous-tom...e6c-3.webp]](https://i.postimg.cc/3x8mwY7P/akira-24-year-old-female-androgynous-tomboy-slim-petite-athle-862d2609-d5df-4c7a-a9d7-7a16119cae6c-3.webp)
Zwei Helfer, eine Übergabe
Der Kran besteht aus zwei Helfern, die sich nie persönlich sehen.
Der erste sitzt in einer auswärtigen Werkstatt. Wenn ich am Code etwas ändere und „Schick's los" sage, fängt er sofort an: nimmt meinen Code, baut daraus ein fertiges Bauteil, packt es in eine nummerierte Kiste (zum Beispiel „Kiste Nr. 28") und stellt sie ins Lager. Diese Werkstatt steht irgendwo im Internet, ich habe sie nie gesehen. Sie wird mir kostenlos vom Hoster meines Code-Repositories zur Verfügung gestellt, solange ich nicht übertreibe.
Der zweite Helfer steht direkt am Hotel auf dem Bauhof. Bei mir konkret: auf meinem Laptop, der mehr oder weniger dauerhaft mitläuft. Sein Job ist, gelegentlich rauszugehen und nachzuschauen, ob's eine neue Anweisung gibt. Wenn ja, holt er die passende Kiste aus dem Lager und stellt sie an die richtige Stelle im Hotel.
Das Schöne dabei: der Bauhof-Helfer braucht keine Türklingel. Niemand kann ihn von aussen anrufen. Er geht nur selbst raus und fragt. Genau richtig für einen Laptop, der hinter dem Hausanschluss steht und nicht aus dem Internet erreichbar ist. Klingelnde Tür wäre ein Sicherheitsrisiko, das ich nicht haben möchte.
Ein Helfer ohne Klingel ist ein Helfer ohne Einbruchsrisiko.
Das Lieferschein-Buch in der Mitte
Wie kommen die beiden Helfer zusammen, wenn sie sich nie sehen? Über ein Lieferschein-Buch.
Das Buch ist ein eigenes kleines Git-Repository namens „homelab". In dem Buch steht für jedes Hotel-Element eine Zeile: „Verwende aktuell Kiste Nr. 28". Mehr nicht. Die Werkstatt darf reinschreiben, der Bauhof darf lesen.
Wenn die Werkstatt eine neue Kiste fertig hat, macht sie zwei Dinge: sie stellt die Kiste ins Lager und sie streicht in dem Buch die alte Nummer durch und schreibt die neue rein. Punkt. Sie kümmert sich nicht ums Hotel selbst.
Der Bauhof-Helfer guckt regelmässig ins Buch. Steht dort eine andere Nummer als gestern, holt er die neue Kiste und tauscht sie aus. Etwa sieben Sekunden. Fertig.
Was ich daran mag: das Buch ist die Wahrheit. Wenn ich wissen will, was im Hotel gerade verbaut ist, schaue ich nicht ins Hotel. Ich schaue ins Buch. Wenn ich was rückgängig machen will, ändere ich nicht das Hotel — ich ändere das Buch. Der Bauhof zieht beim nächsten Blick automatisch nach.
Wenn das Buch und das Hotel auseinanderlaufen, hat das Buch recht. Immer.
Zwei Werks-Ausweise, nicht einer
Beide Helfer brauchen einen Ausweis, um ans Buch zu kommen. Hier habe ich am Anfang gespart und einen einzigen Ausweis für beide ausgestellt. Ist ja dasselbe Buch.
Schlechte Idee. Wenn der Bauhof-Helfer den Ausweis verliert (Laptop geklaut), könnte derjenige, der ihn findet, ins Buch schreiben. Was bedeutet: er könnte sagen „Verwende Kiste Nr. 9999 aus meinem privaten Lager". Und der Hotel-Bauhof würde gehorchen.
Also: zwei getrennte Ausweise. Einer für die Werkstatt, der nur Schreiben kann. Einer für den Bauhof, der nur Lesen kann. Wenn der Bauhof-Ausweis abhandenkommt, kann der Finder zwar mitlesen — aber nichts ändern.
Das ist nicht paranoid, das ist Hygiene. Eine Tür hat einen Schlüssel, der genau diese Tür öffnet. Nicht zehn Türen.
Wer einen Schlüssel macht, der alle Türen öffnet, baut ein Bündel Sollbruchstellen, kein Schlüsselbund.
Drei Stolpersteine, ehrlicherweise
Es lief nicht beim ersten Versuch. Drei Sachen, an denen ich hängengeblieben bin:
1. Zwei Sorten von Anmelde-Codes.
Als ich den Bauhof-Helfer einrichten wollte, fragte das System nach einem Code. Es gibt aber zwei Sorten: einen Anmelde-Code (gilt nur für die einmalige Erstanmeldung, danach Müll) und einen Dauer-Geheimnis (kommt nach erfolgreicher Anmeldung raus, und das benutzt der Helfer dann jeden Tag). Ich habe den Dauer-Geheimnis-Code in das Anmelde-Feld eingetragen. Funktionierte nicht. Halbe Stunde gesucht. Helfer einmal komplett neu aufgesetzt.
2. Das Etikett mit der falschen Nuance.
Ein Helfer kann auf zwei Arten arbeiten: entweder direkt am Hotel mit den dortigen Werkzeugen, oder in einem Container (eine Art transportabler Mini-Werkstatt, in der nichts vom Hotel sichtbar ist). Welche Variante er nimmt, entscheidet ein Etikett auf seinem Werkzeuggürtel — „omnibook" für direkt am Hotel, „omnibook:host" für ausdrücklich-direkt. Steht da nur „omnibook", nimmt er aus alter Gewohnheit die Container-Variante. Und in dem Container existiert das Hotel nicht. Der Helfer suchte vergeblich. Suffix nachgetragen, alles gut.
3. Der leere Lieferwagen.
Mein erster Live-Test endete damit, dass eine Kiste pünktlich am Hotel ankam, ich sie öffnete — und sie war leer. Genauer: die Werkstatt hatte ein Bauteil produziert, das aus einem leeren Gehäuse bestand. Hintergrund: ich hatte eine Woche vorher einen vermeintlich überflüssigen Verbindungsschlauch zwischen meinem Code und dem Bauteil entfernt. Stellte sich raus: durch den Schlauch floss in Wirklichkeit der ganze Inhalt. Werkstatt baute weiter, aber ohne Inhalt. Zwei Stunden Detektivarbeit, bis ich den Fehler gefunden hatte. Schlauch wieder dran, jetzt wandert der Inhalt fest mit ins Bauteil.
„Sah aus, als wäre's nicht wichtig" ist die Diagnose, mit der die meisten Schäden anfangen.
Was läuft jetzt automatisch
Stand heute, eine knappe Woche nach dem Aufbau:
Was nicht automatisch geht: Veröffentlichungen mit fester Versionsnummer (sogenannte „Tags"). Die landen zwar im Lager, aber das Lieferschein-Buch wird absichtlich nicht aktualisiert. Releases gehören zur Schlüsselübergabe, nicht zur täglichen Auslieferung.
Automatisch ist nicht automatisch immer richtig. Ein Release will angekündigt werden, kein nächtlicher Geist.
Was ich daraus gelernt habe
Drei Sachen, die ich beim Kran-Aufbau gelernt habe — gelten für Bauarbeiten und vermutlich auch ausserhalb:
Nächste Baustelle: das eigentliche Hotel — der akisim-Anteil — hängt noch nicht am Kran. Da läuft die Übergabe vom Code zur laufenden Region noch zu Fuss. Aber jetzt, wo der Kran steht, ist's nur noch eine Frage des Anbaus. Ich poste, was passiert.
Oder: warum ich aufgehört habe, jedes neue Bauteil selbst nach oben zu schleppen
Bisher lief der Umbau am Hotel so: ich hatte eine Idee, schrieb den Code, baute lokal ein neues Bauteil, lud es auf einen USB-Stick, fuhr zum Hotel, ging in den Heizungskeller, tauschte das alte Teil gegen das neue. Eine Stunde Hin-und-Her für jede Änderung. Klingt umständlich? War es auch.
Letzte Woche habe ich einen Kran aufgestellt. Genauer: eine kleine Logistik-Kette, die für mich macht, was ich vorher zu Fuss erledigt habe. Heute geht's darum, wie der Kran funktioniert, was ich dabei kaputtgemacht habe und welche drei Schlüssel ich verwechselt habe.
![[Bild: akira-24-year-old-female-androgynous-tom...e6c-3.webp]](https://i.postimg.cc/3x8mwY7P/akira-24-year-old-female-androgynous-tomboy-slim-petite-athle-862d2609-d5df-4c7a-a9d7-7a16119cae6c-3.webp)
Zwei Helfer, eine Übergabe
Der Kran besteht aus zwei Helfern, die sich nie persönlich sehen.
Der erste sitzt in einer auswärtigen Werkstatt. Wenn ich am Code etwas ändere und „Schick's los" sage, fängt er sofort an: nimmt meinen Code, baut daraus ein fertiges Bauteil, packt es in eine nummerierte Kiste (zum Beispiel „Kiste Nr. 28") und stellt sie ins Lager. Diese Werkstatt steht irgendwo im Internet, ich habe sie nie gesehen. Sie wird mir kostenlos vom Hoster meines Code-Repositories zur Verfügung gestellt, solange ich nicht übertreibe.
Der zweite Helfer steht direkt am Hotel auf dem Bauhof. Bei mir konkret: auf meinem Laptop, der mehr oder weniger dauerhaft mitläuft. Sein Job ist, gelegentlich rauszugehen und nachzuschauen, ob's eine neue Anweisung gibt. Wenn ja, holt er die passende Kiste aus dem Lager und stellt sie an die richtige Stelle im Hotel.
Das Schöne dabei: der Bauhof-Helfer braucht keine Türklingel. Niemand kann ihn von aussen anrufen. Er geht nur selbst raus und fragt. Genau richtig für einen Laptop, der hinter dem Hausanschluss steht und nicht aus dem Internet erreichbar ist. Klingelnde Tür wäre ein Sicherheitsrisiko, das ich nicht haben möchte.
Ein Helfer ohne Klingel ist ein Helfer ohne Einbruchsrisiko.
Das Lieferschein-Buch in der Mitte
Wie kommen die beiden Helfer zusammen, wenn sie sich nie sehen? Über ein Lieferschein-Buch.
Das Buch ist ein eigenes kleines Git-Repository namens „homelab". In dem Buch steht für jedes Hotel-Element eine Zeile: „Verwende aktuell Kiste Nr. 28". Mehr nicht. Die Werkstatt darf reinschreiben, der Bauhof darf lesen.
Wenn die Werkstatt eine neue Kiste fertig hat, macht sie zwei Dinge: sie stellt die Kiste ins Lager und sie streicht in dem Buch die alte Nummer durch und schreibt die neue rein. Punkt. Sie kümmert sich nicht ums Hotel selbst.
Der Bauhof-Helfer guckt regelmässig ins Buch. Steht dort eine andere Nummer als gestern, holt er die neue Kiste und tauscht sie aus. Etwa sieben Sekunden. Fertig.
Was ich daran mag: das Buch ist die Wahrheit. Wenn ich wissen will, was im Hotel gerade verbaut ist, schaue ich nicht ins Hotel. Ich schaue ins Buch. Wenn ich was rückgängig machen will, ändere ich nicht das Hotel — ich ändere das Buch. Der Bauhof zieht beim nächsten Blick automatisch nach.
Wenn das Buch und das Hotel auseinanderlaufen, hat das Buch recht. Immer.
Zwei Werks-Ausweise, nicht einer
Beide Helfer brauchen einen Ausweis, um ans Buch zu kommen. Hier habe ich am Anfang gespart und einen einzigen Ausweis für beide ausgestellt. Ist ja dasselbe Buch.
Schlechte Idee. Wenn der Bauhof-Helfer den Ausweis verliert (Laptop geklaut), könnte derjenige, der ihn findet, ins Buch schreiben. Was bedeutet: er könnte sagen „Verwende Kiste Nr. 9999 aus meinem privaten Lager". Und der Hotel-Bauhof würde gehorchen.
Also: zwei getrennte Ausweise. Einer für die Werkstatt, der nur Schreiben kann. Einer für den Bauhof, der nur Lesen kann. Wenn der Bauhof-Ausweis abhandenkommt, kann der Finder zwar mitlesen — aber nichts ändern.
Das ist nicht paranoid, das ist Hygiene. Eine Tür hat einen Schlüssel, der genau diese Tür öffnet. Nicht zehn Türen.
Wer einen Schlüssel macht, der alle Türen öffnet, baut ein Bündel Sollbruchstellen, kein Schlüsselbund.
Drei Stolpersteine, ehrlicherweise
Es lief nicht beim ersten Versuch. Drei Sachen, an denen ich hängengeblieben bin:
1. Zwei Sorten von Anmelde-Codes.
Als ich den Bauhof-Helfer einrichten wollte, fragte das System nach einem Code. Es gibt aber zwei Sorten: einen Anmelde-Code (gilt nur für die einmalige Erstanmeldung, danach Müll) und einen Dauer-Geheimnis (kommt nach erfolgreicher Anmeldung raus, und das benutzt der Helfer dann jeden Tag). Ich habe den Dauer-Geheimnis-Code in das Anmelde-Feld eingetragen. Funktionierte nicht. Halbe Stunde gesucht. Helfer einmal komplett neu aufgesetzt.
2. Das Etikett mit der falschen Nuance.
Ein Helfer kann auf zwei Arten arbeiten: entweder direkt am Hotel mit den dortigen Werkzeugen, oder in einem Container (eine Art transportabler Mini-Werkstatt, in der nichts vom Hotel sichtbar ist). Welche Variante er nimmt, entscheidet ein Etikett auf seinem Werkzeuggürtel — „omnibook" für direkt am Hotel, „omnibook:host" für ausdrücklich-direkt. Steht da nur „omnibook", nimmt er aus alter Gewohnheit die Container-Variante. Und in dem Container existiert das Hotel nicht. Der Helfer suchte vergeblich. Suffix nachgetragen, alles gut.
3. Der leere Lieferwagen.
Mein erster Live-Test endete damit, dass eine Kiste pünktlich am Hotel ankam, ich sie öffnete — und sie war leer. Genauer: die Werkstatt hatte ein Bauteil produziert, das aus einem leeren Gehäuse bestand. Hintergrund: ich hatte eine Woche vorher einen vermeintlich überflüssigen Verbindungsschlauch zwischen meinem Code und dem Bauteil entfernt. Stellte sich raus: durch den Schlauch floss in Wirklichkeit der ganze Inhalt. Werkstatt baute weiter, aber ohne Inhalt. Zwei Stunden Detektivarbeit, bis ich den Fehler gefunden hatte. Schlauch wieder dran, jetzt wandert der Inhalt fest mit ins Bauteil.
„Sah aus, als wäre's nicht wichtig" ist die Diagnose, mit der die meisten Schäden anfangen.
Was läuft jetzt automatisch
Stand heute, eine knappe Woche nach dem Aufbau:
- Code-Änderung am Web-Anteil des Hotels (heisst „phpgridserver") → Werkstatt baut → Lieferschein-Buch wird gestempelt → Bauhof-Helfer rollt in sieben Sekunden aus.
- Code-Änderung am Verwaltungs-Anteil (heisst „akigrid") → identische Kette. Erster grüner Lauf war Lieferung Nr. 28 — vom Push bis zum laufenden Container etwa zehn Minuten, davon waren neun Minuten Tests, die sicherstellen, dass das Bauteil wirklich tut, was es soll.
Was nicht automatisch geht: Veröffentlichungen mit fester Versionsnummer (sogenannte „Tags"). Die landen zwar im Lager, aber das Lieferschein-Buch wird absichtlich nicht aktualisiert. Releases gehören zur Schlüsselübergabe, nicht zur täglichen Auslieferung.
Automatisch ist nicht automatisch immer richtig. Ein Release will angekündigt werden, kein nächtlicher Geist.
Was ich daraus gelernt habe
Drei Sachen, die ich beim Kran-Aufbau gelernt habe — gelten für Bauarbeiten und vermutlich auch ausserhalb:
- Schreiben und Lesen sind zwei Berechtigungen, nicht eine. Es ist verlockend, einen Universalschlüssel zu machen, weil's beim Aufbau bequem ist. In dem Moment, wo der Universalschlüssel verlorengeht, ist alles offen. Lieber zwei Türen mit zwei Schlüsseln als eine Tür mit einem Generalschlüssel.
- Ein Buch zwischen den Stationen ist mehr wert als direkte Zurufe. Wenn die Werkstatt direkt im Hotel rumpfuschen würde („ich tausch dir das mal kurz aus"), wäre das schneller, aber nicht nachvollziehbar. So steht in dem Buch jede Änderung mit Datum und Unterschrift. Wer was wann geliefert hat, ist sichtbar.
- Sieben Sekunden sind keine Magie, sie sind Disziplin. Der Kran ist nicht schneller als ich es zu Fuss könnte, wenn ich's denn würde. Aber er macht es bei jeder Änderung, ohne zu murren, ohne Schritte zu vergessen. Ein langweiliger, gehorsamer Helfer, der jeden Tag dasselbe macht, ist mehr wert als ein genialer Held, der's einmal richtig macht und beim zweiten Mal vergisst.
Nächste Baustelle: das eigentliche Hotel — der akisim-Anteil — hängt noch nicht am Kran. Da läuft die Übergabe vom Code zur laufenden Region noch zu Fuss. Aber jetzt, wo der Kran steht, ist's nur noch eine Frage des Anbaus. Ich poste, was passiert.


![[-]](https://www.gridtalk.de/images/collapse.png)