Virt-Builder erzeugt VM-Images im Nu

chuyu, 123RF

Wie der Blitz

Mit dem Virt-Builder-Tool lassen sich in wenigen Sekunden neue virtuelle Maschinen anlegen. Das ADMIN-Magazin hat einen ersten Blick auf das brandneue Tool geworfen.
Sicher verstaut - Deduplizierung spart Platz, Cloud-Backup für Windows, Areca sichert kostenlos. ADMIN 01/14 stellt Backups für Profis mit und ohne Cloud ... (mehr)

Im Bereich Virtualisierung schreitet die Linux-Welt rasant voran. Erst gab es nur VMware, dann war Xen eine Zeit lang sehr beliebt, mittlerweile ist KVM (Kernel Virtual Machine) das dominierende Hypervisor-System, auf dem beispielsweise auch die Enterprise-Virtualisierungslösung von Red Hat basiert. Der "weltweit führende Anbieter von Open-Source-Lösungen", wie er sich gerne selbst bezeichnet, möchte mit der Weiterentwicklung der RHEV (Red Hat Enterprise Virtualization) gerne VMware Marktanteile abnehmen, aber das ist angesichts der mit dem gleichen Plan antretenden Konkurrenz durch Microsofts Hyper-V ein ehrgeiziges Ziel. Jedenfalls investiert Red Hat eine ganze Menge in die Entwicklung des Linux-Kernels, des Hypervisors und der ganzen Infrastruktur drumherum. Ein Beispiel dafür ist die Libguestfs, die den Zugriff auf und das Arbeiten mit virtuellen Disk-Images ermöglicht. Sie wurde in ADMIN 02/2011 vom Red-Hat-Entwickler Richard W.M. Jones vorgestellt [1] , der jetzt ein neues Tool der Sammlung hinzugefügt hat. Schon länger hat er mit den von ihm so benannten Supermin-Appliances experimentiert: Extrem kleinen Images (um 100 KByte), die in Sekundenschnelle booten. Darauf basierend hat er nun das Tool Virt-Builder entwickelt [2] , das die Installation neuer VM-Images stark beschleunigt. Sonst ist dies ein eher langwieriger Prozess, der eine gewöhnliche Installation einer Linux-Distribution umfasst.

VMs blitzschnell

Mit Virt-Builder geht das alles etwas schneller, denn ein neues VM-Image wird damit basierend auf abgespeckten Templates erstellt, die nur die nötigsten Komponenten beinhalten: im Wesentlichen einen Linux-Kernel, die Basis-Daemons und Systemd (siehe dazu die Admin-Story in diesem Heft). Zurückgreifend auf weitere Tools aus dem Libguestfs-Paket passt Virt-Builder das Template an die Wünsche des Administrators an, setzt etwa das Root-Passwort, konfiguriert das Netzwerk und so weiter.

Enthalten ist Virt-Builder in Libguestfs-Paketen ab der Version 1.24, die noch keiner aktuellen Linux-Distribution beiliegt. Deshalb bleibt demjenigen, der Virt-Builder schon jetzt ausprobieren will, nur die Installation aus dem Quellcode, den man als Tar-Paket oder direkt aus dem Github-Repository herunterladen kann. Für Fedora 20 bietet Jones schon fertige RPMs von Libguestfs 1.24 an, aber die Distribution befindet sich derzeit noch im Beta-Stadium. Praktischerweise muss die Libguestfs nicht systemweit installiert werden, um die neuen Tools auszuprobieren. Mit speziellen Run-Skripts lassen sich die Programme auch direkt im Quellcodebaum starten.

Die Abhängigkeiten für die Libguestfs lassen sich auf Debian/Ubuntu praktischerweise leicht mit dem Befehl »apt-get build-dep libguestfs« auflösen. Darüber hinaus werden noch die Pakete »flex« , »bison« , »curl« und »gnupg« benötigt. Weil die Tools außerdem Dateien aus dem Host-Dateisystem verwenden, muss es unbedingt auf dem Laufenden sein ( »apt-get update« und »apt-get dist-upgrade« bei Debian/Ubuntu). Ist das alles erledigt, konfiguriert »./configure« den Quellcode und »make« übersetzt ihn – auf Multicore-Systemen lässt sich das mit »make -jAnzahl-Cores« beschleunigen. Um die Libguestfs aus dem Github-Repository zu übersetzen, empfehlen die Entwickler das Skript aus Listing 1 , das auf Listing 2 zurückgreift.

Listing 1

localconfigure

01 . localenv
02 ./autogen.sh \
03   --prefix /usr \
04   --libdir /usr/lib \
05   --disable-static \
06   --enable-gtk-doc \
07   -C \
08   "$@"

Listing 2

localenv

01 export SKIP_TEST_PARALLEL_MOUNT_LOCAL=1
02 export SKIP_TEST_FILE_ARCHITECTURE_11=1

Normalerweise braucht Virt-Builder für das Erzeugen eines Images keine Root-Rechte. Allerdings muss es auf das Kernel-Image und die initiale Ramdisk des Hosts zugreifen, die dummerweise unter Ubuntu für normale Anwender nicht zugänglich sind. Also muss man entweder Virt-Builder mit »sudo« ausführen oder die Zugriffsrechte im Verzeichnis »/boot« entsprechend anpassen. Einen Test der übersetzten Tools startet »make quickcheck« . Hat alles geklappt, kann es mit dem Virt-Builder losgehen.

Eine Übersicht über die zur Verfügung stehenden Systeme gibt »virt-builder --list« . Wie erwähnt, muss das Tool im Quellcode-Baum mit einem Run-Skript ausgeführt werden:

./run builder/virt-builder --list

Die Ausgabe ist in Abbildung 1 zu sehen. Leider funktioniert aber der Bau eines Images an dieser Stelle noch nicht, denn es fehlen noch die passenden Templates für diese Systeme, die normalerweise im Verzeichnis »builder/website/« liegen. Zu finden sind sie unter der Adresse [3] . Um dort zum Beispiel ein Image für eine Installation von Fedora 19 herunterzuladen, wechselt man ins Verzeichnis »builder/website« und gibt dort den folgenden Befehl ein:

Abbildung 1: Virt-Builder zeigt eine Liste von Linux-Systemen, die es zur Installation anbietet.
wget http://libguestfs.org/download/builder/fedora-19.xz

Das Image ist nur 164 MByte groß, der Download ist also recht schnell erledigt. Jetzt lässt sich, wieder zurück im Hauptverzeichnis der Libguestfs-Distribution, mit einem Aufruf ein neues Fedora-Image erzeugen:

./run builder/virt-builder  fedora-19 --output fedora19.img --hostname fedora19

Damit erzeugt das Tool ein zufälliges Root-Passwort für das neue System. Wer das nicht will, kann ein neues Passwort auch auf der Kommandozeile angeben. Aus Sicherheitsgründen, damit das Passwort nicht in der Prozessliste auftaucht, allerdings nicht als direkten Parameter, sondern über den Umweg einer Datei. Das Passwort steht im Klartext in der Datei und wird über die Option »--root-password file:Rootpass.txt« an das Tool übergeben.

Die so entstehende Linux-Installation kann man auf alle erdenklichen Arten an die eigenen Wünsche anpassen. Zum Beispiel listet »virt-builder --notes Template« die verwendeten Kickstart- und Installationsskripts auf, über die man die Installation anpassen kann ( Abbildung 2 ).

Abbildung 2: Über die Kickstart-Datei und das Installationsskript lässt sich ein Image individuell anpassen.

Im Fall von Fedora 19 ist alles nach 45 Sekunden erledigt und ein neues Disk-Image liegt auf der Festplatte. Wer will, kann es sofort mit Qemu booten oder mit virt-install in eine Linux- und Libvirt-basierte Virtualisierungsinfrastruktur importieren:

sudo virt-install --name fedora19 --import --ram 2048 --disk /var/lib/libvirt/images/fedora19.img

Das neue System braucht beim ersten Booten ein bisschen länger, weil es noch die Firstboot-Skripts ausführt, danach dauert es ungefähr zehn Sekunden, bis man den Login-Prompt zu sehen bekommt. Wer nach dem Login einen Blick auf das virtuelle Dateisystem wirft, bekommt einen Eindruck vom Ressourcenverbrauch: Das neu installierte Linux-System belegt nur etwa 700 MByte.

Über die Installation hinaus kann Virt-Builder auch den Hostnamen der neuen VM setzen, Benutzer anlegen, Passwörter ändern, Pakete installieren und beliebige Dateien editieren. Weil sich die virtuellen Maschinen so schnell erzeugen lassen, eignen sie sich auch dazu, mal eben schnell was in einer anderen Linux-Distribution zu erledigen. Der Libguestfs-Entwickler Jones hat das in seinem Blog vorgeführt, wo er Virt-Builder verwendet, um Pakete für andere Distributionen zu bauen [4] . Der Bau eines kompletten Libvirt-Pakets dauerte damit etwa sechs Minuten, gegenüber den ungefähr zwei Minuten, die es auf einem nicht virtualisierten Host-System in Anspruch nahm.

Als dieser Artikel entstand, gab es übrigens noch eine interessante Diskussion zum Thema Virt-Builder [5] : Jones musste sich dafür rechtfertigen, dass er Virt-Builder in der vergleichsweise esoterischen Programmiersprache Ocaml geschrieben hat, die, wie es sein Kollege ausdrückte, "nur er versteht."

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

VM-Images schnell mit virt-builder erzeugen

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

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

Ausgabe /2023