Automatische Ubuntu Installation mit Autoinstall

Nebst “debian-installer preseeding” gibt es seit Ubuntu 20.04 (Server) und Ubuntu 23.04 (Desktop) eine weitere Methode, Ubuntu Installationen zu automatisieren, nämlich Autoinstall.
Die Autoinstall-Methode setzt eine YAML-Datei voraus, in der sämtliche Fragen über die Konfiguration des zu installierenden Systems beantwortet werden, sodass die Installation ohne weiteren manuellen Eingriff vollautomatisch abläuft.
Wie sich eine solche Autoinstall-Installation auf einen USB-Datenträger oder einer DVD anwenden lässt, wird im folgenden Beitrag erklärt.

Vorbereitung der ISO-Datei

Zunächst wird ein USB-Datenträger wie gewohnt mit einem Ubuntu Image bespielt. Darauf zu achten ist jedoch, dass für die Installation der Server Variante mindestens 20.04 bzw. für die Desktop Variante 23.04 verwendet werden muss, da Autoinstall nur ab diesen Versionen funktioniert.
Im folgenden Beispiel verwende ich die Beta Version von Ubuntu 24.04 in der Desktop Variante.

Hinweis:
Mit den Daily/Nightly Build bin ich in Kombination mit der Autoinstall auf massive Probleme gestoßen, weswegen mindestens die Beta oder noch besser das offizielle Release, verwendet werden sollte.

Wenn wir die ISO direkt auf einen Datenträger schreiben würden, wäre dieser in aller Regel read-only, sodass wir leider nicht mehr die Möglichkeit haben, für Autoinstall benötigte Dateien anzulegen. Aus diesem Grund müssen wir das ISO zuvor modifizieren. Das gelingt am einfachsten mit dem grafischen Tool Cubic. Folgendermaßen lässt es sich über die PPA installieren:

sudo add-apt-repository ppa:cubic-wizard/release
sudo apt install --no-install-recommends cubic

Anschließend rufen wir es auf:

Im Startbildschirm wählen wir zunächst ein Verzeichnis für unser Projekt und klicken auf Next:

Dann wählen wir die ISO aus und klicken abermals auf Next:

Nachdem das ISO eingeladen wurde, landen wir in einer chroot-Umgebung von der aus wir noch das Live-System verändern könnten. Da dies nicht unser anliegen ist, klicken wir wieder direkt auf Next.

Als nächstes erscheinen am oberen Fensterrand 3 Tabs, bei denen wir zunächst auf Preseed klicken. Hier haben wir u.a. die Möglichkeit, neue Dateien und Ordner anzulegen. Also legen wir die Datei autoinstall.yaml an und klicken auf Create

Nun haben wir die Möglichkeit, diese mit Inhalt zu befüllen. Hier legen wir all die gewünschten Parameter fest, die während der Installation automatisch getroffen werden sollen. Wichtig hierbei zu verstehen ist es, dass, falls ein eine Einstellung innerhalb der autoinstall.yaml nicht gesetzt ist, diese mit dem Standardwert konfiguriert wird.
Eine minimale autoinstall.yaml sähe folgendermaßen aus:

Die erste einkommentierte Zeile ist notwendig, da sie die autoinstall.yaml einleitet. Dann folgt ein autoinstall:, die eingerückte Version und die Sektion identity:, die den lokalen Administrator festlegt (hostname, username und password müssen hier mit den eigenen Werten entsprechend geändert werden).
Kleiner Tipp an dieser Stelle, ein gehashtes Passwort lässt sich mit dem Befehl …

echo GeheimesPasswort | mkpasswd -m sha-256 -s

… in der Kommandozeile erzeugen.
Da es sich um eine YAML-Datei handelt, ist die korrekte Einrückung essentiell für die korrekte Funktionsweise.
Nebst identity: gibt es natürlich noch zahlreiche weitere Sektionen die gesetzt werden können, um die Installation den eigenen Bedürfnissen anzupassen, wie etwa das Sprach- und Tastaturlayout, die Zeitzone, die Verwendung bestimmter Paket-Repositories usw. Auch ist es möglich, bestimmte Angaben erst während der Installation zu treffen, was mit interactive-sections: funktioniert.
Eine gut dokumentierte und vollständige Auflistung aller Möglichkeiten und Parameter findet sich auf dieser Seite:
https://canonical-subiquity.readthedocs-hosted.com/en/latest/reference/autoinstall-reference.html

Neben der autoinstall.yaml werden noch zwei weitere Dateien benötigt, nämlich die meta-data und die user-data. Diese 2 Dateien sind für den cloud-init-Dienst notwendig, der während der Installation mitläuft.

Die meta-data bleibt komplett leer, in die user-data hingegen füllen wir denselben Inhalt, wie in der autoinstall.yaml, d.h. user-data und autoinstall.yaml müssen inhaltlich deckungsgleich sein!
Damit der Bootloader Grub auch weiss, dass er mit Hilfe der autoinstall.yaml booten soll, modifizieren wir noch die grub.cfg und wechseln deshalb auf den Tab Boot. Hier sehen wir die jeweiligen Grub-Einträge, die während des Boot-Vorgangs auswählbar sind. Wir fügen hier einen weiteren Eintrag (oberhalb des ersten oder unterhalb des letzten “menuentry”) hinzu:

Alternativ lässt sich auch einer der bestehenden Einträge modifizieren. Wichtig ist hier lediglich, dass in der Zeile linux die Parameter autoinstall (für die Autoinstall-Initiierung) sowie ds=nocloud\;seedfrom=/ steht.
Wir klicken auf Next und erstellen das ISO mit einem Klick auf Generate.
Ist der Prozess durchgelaufen, beenden wir das Menü mit Close.

Im zuvor ausgewählten Projektordner befindet sich nun das modifizierte ISO:

Um die ISO auf einen USB-Stick oder eine DVD zu schreiben, eignen sich beispielsweise die Programme “Startmedienersteller” bzw. “Startup Disk Creator” (für USB-Sticks) oder “Brasero” (für DVDs).

Installation mit der vorbereiteten ISO Datei

Nach erfolgtem Schreibprozess booten wir von dem neu erstellten Medium.

Der Installationsprozess sollte in etwas folgendermaßen starten und ohne weitere Eingaben durchlaufen:

Am Ende können wir uns dafür entscheiden, das Betriebssystem entweder noch weiterhin zu verwenden oder einen Neustart durchzuführen:

Nach erfolgtem Neustart landen wir in den Login-Bildschirm und sehen bereits den von uns definierten lokalen Administrator “local_admin”.

Das Betriebssystem wäre damit installiert!

Fazit

Die Autoinstall Methode ist eine stark skalierbare Art und Weise, Ubuntu-Systeme automatisch zu provisionieren. Zahlreiche Vorgaben ermöglichen es, die jeweilige Installation auf die eigenen Bedürfnisse anzupassen. Auch sind bei Bedarf interaktive Eingaben während der Installation festlegbar.
Als Manko sehe ich hier die recht stringente Formatierung der YAML-Datei, sowie die umständliche Einrichtung der notwendigen Dateien, die (sollte auch nur ein Parameter oder eine einzelne Datei nicht vorhanden sein) direkt in Fehlern mündet.

Bildquellen:
Bild von guaxipo auf Pixabay
Bild von OpenClipart-Vectors auf Pixabay

2 Kommentare zu „Automatische Ubuntu Installation mit Autoinstall“

  1. Moin! Vielen dank für den super Artikel! Das hat sehr geholfen!

    Eine Anmerkung:
    Im grub Eintrag, der als Text (zum Kopieren) steht, fehlt /cdrom/. Auf dem Bild ist es korrekt. Bei mir hat es ohne /cdrom/ nicht funktioniert:
    linux /casper/vmlinuz autoinstall ds=nocloud\;seedfrom=/preseed/ — quiet splash
    müsste
    linux /casper/vmlinuz autoinstall ds=nocloud\;seedfrom=/cdrom/preseed/ — quiet splash
    sein. Viele Grüße, Daniel

    1. derlinuxwikinger

      Hallo Daniel,
      vielen Dank für dein Feedback!
      Da hat sich wohl ein kleiner Fehler eingeschlichen. Habe es gleich mal korrigiert.

      Beste Grüße

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen