virt-install: Reboot nach VM-Installation

restartFür gewöhnlich erstelle mich meine virtuellen Systeme auf KVM-Servern mit libvirt und dem Tool „virt-install“. Das Programm bietet die Möglichkeit, eine Vielzahl von Optionen für die Konfiguration einer VM mitzugeben. Ich definiere hierüber ganz einfach die Rahmendaten, wie CPU-Anzahl, RAM-Größe und Netzwerk-Einstellungen. Darüber hinaus kann man direkt noch Parameter für die Installation des Gast-Betriebssystems mitgeben, also OS-Typ, Installationsquelle und – was ich besonders cool finde – Extra-Parameter für z.B. ein AutoYaST-XML für die unbeaufsichtigte Installation von openSUSE. Eigentlich war ich also mit „virt-install“ schon recht zufrieden… wenn da nicht dieser kleine Haken gewesen wäre.

Das Problem

Die VM wird erstellt, das Betriebssystem wird installiert. Danach sollte eigentlich ein Neustart erfolgen. Doch hier wurden meine VM’s immer einfach nur heruntergefahren, als hätte man das „destroy“-Kommando verwendet. Man musste also zwischendurch prüfen, ob der Gast noch lief. Falls nicht, war das ein Zeichen dafür, dass der erste Schritt der Installation abgeschlossen war. Mittels „virsh start …“ konnte man den Gast dann wieder anschubsen und es ging weiter. Ganz schön nervig, weil man quasi dabei sitzen musste.

Die Lösung

Des Rätsels Lösung könnte einfacher nicht sein, man muss nur drauf kommen. Ich empfand es immer als praktisch, dass „virt-install“ mir nur wenige Sekunden nach dem Start bereits wieder meine Shell zurück gab und die Installation im Hintergrund fortsetzte. Doch genau hier liegt die Ursache für das Problem. Offenbar gibt virt-install die Kontrolle nach dem Aufruf an libvirt ab und hat natürlich keine Ahnung, wann die Installation abgeschlossen ist.

--wait=-1

Mit dem Parameter „–wait“ und einer negativen Zahl als Wert wartet „virt-install“ geduldig ab, bis die VM (durch die Betriebssystem-Installation) heruntergefahren wird und sendet den Befehl zum Neustart an libvirt. Auf diese Weise bleibt zwar die Shell für die Dauer der Installation gesperrt, aber dann öffnet man eben eine Weitere, um zu arbeiten.

Ich bin jedenfalls froh darüber, nun mit „virt-install“ endlich vollständig automatisierte Installationen durchführen zu können.