VM-Images schnell mit virt-builder erzeugen

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Um VM-Images ohne vollständige Installation eines Betriebssystem anzufertigen, bietet sich das Tool "virt-builder" an.

Unter Linux lassen sich mit "virt-install" in einer Zeile virtuelle Maschinen installieren, wie unser ADMIN-Tipp "Einzeiler zur VM-Installation" zeigt. Allerdings ist dabei etwas Geduld gefragt, denn dabei läuft eine komplette automatisierte Installation einer Linux-DIstribution ab. Schneller geht es mit dem Tool "virt-builder", das ein Image aus vorgefertigten Templates zusammenbaut. Es befindet sich in dem Paket, das erstaunlicherweise auf Debian/Ubuntu wie auch Red Hat/Fedora/CentOS "libguestfs-tools" heißt. Eine Übersicht der verfügbaren Images liefert ein Aufruf von "virt-builder --list":

$ virt-builder --list
...
fedora-28                x86_64     Fedora® 28 Server
freebsd-11.1             x86_64     FreeBSD 11.1
scientificlinux-6        x86_64     Scientific Linux 6.5
ubuntu-10.04             x86_64     Ubuntu 10.04 (Lucid)
ubuntu-12.04             x86_64     Ubuntu 12.04 (Precise)
ubuntu-14.04             x86_64     Ubuntu 14.04 (Trusty)
ubuntu-16.04             x86_64     Ubuntu 16.04 (Xenial)
ubuntu-18.04             x86_64     Ubuntu 18.04 (bionic)

Neben openSUSE, CentOS, Debian, CirrOS, Ubuntu und Fedora ist hier sogar FreeBSD vertreten.

Nun könnten Sie im Prinzip mit dem Erstellen eines Image anfangen – wenn Sie nicht etwa Ubuntu 16.04 verwenden. Diese Distribution besitzt einen Bug im Libguestfs-Code, den sich natürlich keiner bequemt zu fixen; dies ist neueren Distributionen vorbehalten, die Libguestfs 1.34 oder neuer mitbringen, in der dieser Fehler behoben ist. Ein Workaround ist, das entsprechende Skript anzupassen. Sollte jemals das Libguestfs-Paket von den Distributoren aktualisiert werden, wäre diese Änderung wohl zunichte.Es handelt sich um das Skript "init", das in der Datei "/usr/lib/x86_64-linux-gnu/guestfs/supermin.d/init.tar.gz" enthalten ist. Entpacken Sie zuerst die Datei, ändern Sie das Skript und packen Sie sie danach wieder ein:

tar xf /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/init.tar.gz
vi init
sudo tar cfz /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/init.tar.gz init

Die Änderung sieht so aus, dass Sie nach der Zeile 111 den Aufruf "touch /etc/fstab" einbauen, etwa so (nur ohne das Pluszeichen, das ein Ergebnis des diff-Kommandos ist):

 if test "$guestfs_network" = 1; then
     iface=$(ls -I all -I default -I lo /proc/sys/net/ipv4/conf)
+    touch /etc/fstab
     if dhclient --version >/dev/null 2>&1; then
         dhclient $iface
     else

Damit sollte der virt-builder auch auf Ubuntu 16.04 funktionieren. Der folgende Aufruf installiert eine VM mit Fedora 28:

virt-builder fedora-28 --root-password password:T0pZecr3T

Das damit erstellte Disk-Image importieren Sie folgendermaßen in die Libvirt-Umgebung:

virt-install --name f28-2 --ram 2048 --disk path=fedora-28.img,format=raw --os-variant fedora22 --import --graphics none

Die "OS-Variante" ist hier mit "fedora22" gewählt, weil es das neueste ist, was Ubuntu 16.04 anbietet, wie ein Aufruf von "osinfo-query os | grep fedora" verrät (das Tool steckt in dem Paket "libosinfo-bin"). Haben Sie eine neuere Variante, verwenden Sie diese, aber groß dürfte der Unterschied im Endeffekt nicht sein.

Ein Update des Images können Sie beim Zusammenbauen mit dem Schalter "--update" erreichen. Mit "--ssh-inject" schreiben Sie dem Image gleich SSH-Credentials ein. Mehr dazu verrät die Manpage zu virt-builder.

20.09.2018
comments powered by Disqus

Artikel der Woche

Rechneranalyse mit Microsoft-Sysinternals-Tools

Der Rechner verhält sich eigenartig oder Sie haben eine unbekannte Applikation im Task Manager entdeckt und möchten erfahren, worum es sich dabei genau handelt und ob sie möglicherweise gefährlich ist? In so einem Fall helfen die Sysinternals-Tools von Microsoft. Dieser Beitrag stellt die drei Werkzeuge Autoruns, Process Explorer und TCPView vor. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018