man möchte mehrere gleiche PC mit einer identischen Debian-Installation. Also installiert man einen, richtet alles ein und verpackt / mit tar, ungefähr so:
1
apt-get clean
2
rm -rf /root/.cache
3
rm -rf /root/.ssh
4
rm -rf /home/*/.ssh
5
set -e
6
mount -t tmpfs tmpfs /tmp
7
mandb
8
updatedb
9
mount -o remount,ro /
10
tar --create --zstd --file /tmp/root.zst --one-file-system /
Diese root.zst und ein Entpack-Script kopiert man auf einen bootfähigen USB-Stick, so, dass das Script automatisch startet. Sobald ein PC von dem Stick bootet, wird seine Festplatte partitioniert, formatiert und die root.zst drauf entpackt. Das wäre für Leute, die sich auskennen, optimal.
Es gibt noch zwei ungelöste Aufgaben:
wie kann man Dummies davor schützen, ihren PC platt zu machen?
wie kann das Script feststellen, ob es auf einem kompatiblen PC läuft?
Es wird wahrscheinlich 2 verschiedene PC-Modelle geben, die natürlich™ unterschiedliche Images brauchen. Wenn die Erkennung zuverlässig funktioniert, wäre auch die erste Aufgabe fast(?) gelöst.
DMI war wohl für den Zweck gedacht, aber funktioniert das? Es gibt oder gab /sys/firmware/dmi/ und /sys/class/dmi/id/. Allgemein scheint /sys/class/ stabiler und aktueller zu sein, weiß jemand genaueres?
Welche Sicherheitsabfragen könnte man noch machen? Wenn die Platte fabrikneu ist, darf man auf jeden Fall installieren. Wenn schon die gleiche Installation drauf ist, ist es wohl ein Update, aber wie viel Unterschied akzeptiert man? Im Extremfall war etwas ganz anderes installiert und man möchte man das oder eine total kaputte Installation ersetzen.
man möchte mehrere gleiche PC mit einer identischen Debian-Installation.
Was spricht gegen die dafür vorgesehenen klassischen Werkzeuge wie FAI, eine preseed.cfg für den Debian-Installer und / oder zum Beispiel Ansible?
Es wird wahrscheinlich 2 verschiedene PC-Modelle geben, die natürlich™
unterschiedliche Images brauchen. Wenn die Erkennung zuverlässig
funktioniert, wäre auch die erste Aufgabe fast(?) gelöst.
Mir persönlich erscheint die Idee mit den Images keine besonders gute zu sein, da würde ich höchstens ein Minimal-Debian mit OpenSSH-Zugang und einem PubKey ausrollen und die Büchsen dann mit Ansible installieren und konfigurieren. Im Endeffekt hättest Du damit auch gleich noch den eleganten Vorzug, eine fertige Ansible-Infrastruktur zur Pflege der Maschinen zu haben, denn sonst könnte es "mit einer identischen Debian-Installation" womöglich schnell vorbei sein.
man möchte mehrere gleiche PC mit einer identischen Debian-Installation.
Also installiert man einen, richtet alles ein und verpackt / mit tar,
ungefähr so:
Da solltest du aber noch etwas mehr aufräumen. Mindestens:
Ganz Toll sind "kryptische" Befehle im Netz, die man vorschnell ins Terminalfenster kopiert, ohne nachzuforschen, was sie genau tun. Damit hat man schnell etwas falsches gelöscht oder irgend etwas installiert, dessen Funktion einem nicht mal klar ist.
Nachtrag: Ich hatte hier ein konkretes Beispiel genannt, aber das war mir im Nachhinein doch zu riskant.
man möchte mehrere gleiche PC mit einer identischen Debian-Installation.
Was spricht gegen die dafür vorgesehenen klassischen Werkzeuge wie FAI,
eine preseed.cfg für den Debian-Installer und / oder zum Beispiel
Ansible?
Nun, tar ist noch klassischer ;) Außerdem muss man nach preseed noch jede Menge von Hand einrichten. Ich hab schon versucht, das zu minimieren, aber es bleibt Handarbeit. Besonders, wenn man ein read-only root haben will.
Mir persönlich erscheint die Idee mit den Images keine besonders gute zu
sein, da würde ich höchstens ein Minimal-Debian mit OpenSSH-Zugang und
einem PubKey ausrollen und die Büchsen dann mit Ansible installieren und
konfigurieren.
Warum so umständlich?
Im Endeffekt hättest Du damit auch gleich noch den eleganten Vorzug,
eine fertige Ansible-Infrastruktur zur Pflege der Maschinen zu haben
OK, wenn man das nutzen könnte... Aber dazu müssten die online sein. Es muss (auch) per USB-Stick funktionieren.
Da solltest du aber noch etwas mehr aufräumen. Mindestens:
Machine-Id löschen
Vielen Dank für den Tipp! Die war mir noch garnicht aufgefallen, weder positiv noch negativ -- bis jetzt. Das scheint eine aufgewärmte hostid zu sein, sowas will man eigentlich nicht haben. Auf jeden Fall ist es ein Geschenk für die Werbeindustrie, mindestens chrome benutzt die. Andererseits darf man sie bei jedem boot neu auswürfeln. Außerdem kopiert systemd /var/lib/dbus/machine-id nach /etc/machine-id, aber erstere kann ein Link auf /etc/machine-id sein. Eine richtige UUID ist es auch formal nicht und die man page fehlt auch. Eine schöne WTF-Sammlung :) Offensichtlich und erfahrungsgemäß kann man die ignorieren.
wie kann das Script feststellen, ob es auf einem kompatiblen PC
läuft?
Könnte man sich bei Windows abschauen. Haskell Plattform hat auch eine Überprüfung, die allerdings erst nachdem alles korrekt installiert ist funktioniert. Besser wäre gewesen, schon vorher den Dienst zu verweigern, dann hätte man sich das Herumgeiern mit Speicherzugriff-Umleitungen oder ähnlichem erspart.
Mehr Aufwand, aber universeller wäre, Du würdest einen Referenzrechner aufsetzen und aus der Distro mit allem was Du noch installiert hast ein eigenes Installationsmedium erzeugen, quasi Deine eigene Distro machen.
Mir persönlich erscheint die Idee mit den Images keine besonders gute zu
sein, da würde ich höchstens ein Minimal-Debian mit OpenSSH-Zugang und
einem PubKey ausrollen und die Büchsen dann mit Ansible installieren und
konfigurieren.
Warum so umständlich?
++ für ansible, das klingt aufwändiger als es ist
Im Endeffekt hättest Du damit auch gleich noch den eleganten Vorzug,
eine fertige Ansible-Infrastruktur zur Pflege der Maschinen zu haben
OK, wenn man das nutzen könnte... Aber dazu müssten die online sein. Es
muss (auch) per USB-Stick funktionieren.
wenn die Kisten komplett ohne Internet/Netzwerk dastehen, dann sollte auch ein einfacher Festplattenklon funktioniere? wenn die Kiste nicht kompatibel ist, dann startet das System eh nicht, sonst gehts.
Und ohne zentrale Verwaltung ala Ansible o.ä. sind die Kisten zu genau einem Zeitpunkt identisch: nach der Installation. Danach werden die Kisten unweigerlich auseinander driften...
Mehr Aufwand, aber universeller wäre, Du würdest einen
Referenzrechner aufsetzen und aus der Distro mit allem was Du noch
installiert hast ein eigenes Installationsmedium erzeugen, quasi
Deine eigene Distro machen.
Genau das habe ich vor; nur "eigene Distro" ist etwas übertrieben.
wenn die Kisten komplett ohne Internet/Netzwerk dastehen, dann sollte
auch ein einfacher Festplattenklon funktioniere?
Richtig. Aber warum wäre das mit Netzwerk anders?
wenn die Kiste nicht kompatibel ist, dann startet das System
eh nicht, sonst gehts.
Schön wär's, geradezu traumhaft. Praktisch startet das und auf den ersten Blick läuft alles, nur die ACPI Tabellen sind vermurkst und syslog wird mit Fehlermeldungen voll gemüllt. Oder so. PCs halt...