Erzeugung von KVM-Maschinen mit Boxgrinder und VMBuilder automatisieren

© yewkeo, 123RF

Virtuelle Bastelstunde

Das manuelle Anlegen einer virtuellen Maschine ist unkompliziert, wird aber zu mühsamen Arbeit, wenn man regelmäßig viele virtuelle Maschinen einrichten muss. Mit den Programmen VMBuilder und Boxgrinder lässt sich dieser Prozess automatisieren.
KVM etabliert sich als Standardlösung zur Virtualisierung unter Linux. Der ADMIN-Schwerpunkt hilft beim Bau virtueller Linux-Maschinen, stellt das ... (mehr)

Eigentlich soll Virtualisierungstechnologie dem Administrator die Arbeit erleichtern. Werden aus einigen Servern einige Dutzend VMs, gestaltet sich die vermeintliche Erleichterung schnell als Bürde. Praktisch sind deshalb Tools, die das Anlegen neuer virtueller Rechner erleichtern. Die schnellste und einfachste Methode, um eine neue virtuelle Maschine einzurichten, ist das Klonen. Dazu führen Sie in der Shell das Kommando »virt-clone« aus, zum Beispiel so:

virt-clone --original userver5 --name userver6 --file /var/lib/libvirt/images/userver6.img

»virt-clone« erzeugt eine neue XML-Definitionsdatei für die virtuelle Maschine, kopiert die Image-Datei für die virtuelle Festplatte und gibt dem Netzwerkadapter eine neue, zufällige MAC-Adresse. Die restlichen Hardware-Komponenten bleiben unverändert.

Nach dem Klonen ist allerdings eine Menge Handarbeit erforderlich: Sie müssen in der virtuellen Maschine die Netzwerkkonfiguration anpassen und den Hostnamen neu einstellen. Wenn es in der ursprünglichen virtuellen Maschine einen SSH-Server gab, müssen Sie auch den SSH-Schlüssel der neuen virtuellen Maschine neu erzeugen.

Boxgrinder

Das Klonen ist also mit vielen manuellen Eingriffen verbunden, die fehleranfällig sind. Wozu klonen, wenn Sie virtuelle Maschinen mit einem einzigen Kommando von Grund auf neu erzeugen können? In der Red-Hat-Welt hilft dabei das Boxgrinder-Projekt [1] . Damit lassen sich im Handumdrehen virtuelle Fedora-, RHEL, CentOS- und Scientific-Linux-Maschinen erzeugen. Boxgrinder ist übrigens kein KVM-spezifisches Werkzeug: Es kommt auch mit diversen anderen Virtualisierungs- und Cloud-Systemen zurecht und unterstützt neben KVM auch VMware, Amazon EC2 und Virtualbox. Fertige Boxgrinder-Pakete existieren momentan leider nur für Fedora. Die Installation ist unkompliziert:

yum install rubygem-boxgrinder-build

RHEL- und CentOS-Anwender müssen wohl auf Version 6.4 warten, bis offizielle Boxgrinder-Pakete zur Verfügung stehen. Auch wenn Sie im Produktiveinsatz vermutlich nicht Fedora als KVM-Host einsetzen werden, ist diese Einschränkung weniger schlimm, als es auf den ersten Blick scheint: Zum einen können Sie Boxgrinder unter Fedora ausführen, um beispielsweise eine virtuelle CentOS-Maschine zu erzeugen und auf einem unter CentOS laufenden KVM-Host zu installieren. Fedora dient damit also nur als Vehikel, um Boxgrinder auszuführen, aber nicht als Virtualisierungssystem. Zum anderen können Sie Boxgrinder auf dem KVM-Host in einer virtuellen Maschine ausführen. Auf der Boxgrinder-Website finden Sie hierfür sogar ein fertiges Image [2] .

Viele Funktionen von Boxgrinder sind in Plugins implementiert. Es gibt drei Typen von Plugins:

  • OS-Plugins steuern betriebssystemspezifische Details der virtuellen Maschinen.
  • Plattform-Plugins sind für die Besonderheiten des jeweiligen Virtualisierungssystems verantwortlich. Wenn kein Plattform-Plugin zum Einsatz kommt, werden virtuelle KVM-Maschinen erstellt.
  • Delivery-Plugins kümmern sich schließlich darum, wie die virtuelle Maschine ausgeliefert wird, das heißt wie sie zum Virtualisierungs-Host übertragen wird.

Nach der Installation von Boxgrinder verschaffen Sie sich mit dem Kommando »boxgrinder-build --version« einen Überblich über die zur Verfügung stehenden Plugins (siehe Listing 1 ).

Listing 1

Boxgrinder-Plugins

 

Das Appliance Definition File

Bevor Sie Ihre erste virtuelle Maschine mit Boxgrinder erzeugen, müssen Sie die virtuelle Maschine in einer Textdatei beschreiben, dem sogenannten Appliance Definition File. Diese Datei kann wie in Listing 2 aussehen.

Listing 2

Application Definition File für CentOS

 

Zwingend erforderlich sind lediglich die Angaben name sowie »os/name« und »os/version« . Wenn Sie als Betriebssystem »rhel« , »centos« oder »sl« (für Scientific Linux) angeben, müssen Sie als Versionsnummer einfach 5 oder 6 angeben. Boxgrinder berücksichtigt dann automatisch die aktuellste passende Version (momentan also Version 6.3).

Für alle weiteren Parameter kommen gegebenenfalls Defaultwerte zur Anwendung. Im »os« -Abschnitt können Sie mit »password« das gewünschte Root-Passwort angeben (standardmäßig lautet es »boxgrinder« ).

Der »hardware« -Abschnitt ist für die Partitionierung der virtuellen Festplatte zuständig. Hier geben Sie die gewünschten Partitionen mit dem Mount-Punkt und der Größe in GByte an. Falls Sie eine Swap-Partition wünschen, geben Sie statt des Mount-Punkts die Zeichenkette »swap« an. Falls die Partitionierungsdaten fehlen, richtet Boxgrinder lediglich eine ein GByte große Root-Partition ein.

Außerdem bestimmt der »hardware« -Abschnitt die Anzahl der CPU-Cores (standardmäßig einer) und die Größe des RAM-Speichers in MByte bestimmen (standardmäßig 256).

Der »packages« -Abschnitt bestimmt, welche Pakete in der virtuellen Maschine installiert werden. Dabei geben Sie die gewünschten Pakete zeilenweise an, wobei Sie jeweils ein Minuszeichen voranstellen müssen. »@name« bezeichnet Paketgruppen.

Die Paketgruppe »core« ist automatisch ausgewählt. Sie bewirkt bei Fedora- und RHEL-Distributionen eine Minimalinstallation für den Textmodusbetrieb (ungefähr 200 Pakete mit etwa 600 MByte Platzbedarf). Die Namen und der Umfang der Paketgruppen von Red-Hat-basierten Distributionen gehen aus der Datei »repodata/xxx-comps.xml« auf der Installations-DVD hervor. Auch »yum grouplist -v« liefert eine Liste aller Gruppen, wobei die für den Boxgrinder relevanten Gruppen-IDs in Klammern angegeben werden. »yum grouplist« kennt die minimale Core-Gruppe allerdings nicht.

Neben den hier beschriebenen Schlüsselwörtern können Sie im Appliance Definition File zusätzliche Paketquellen angeben ( »packages« ), andere Appliance-Dateien integrieren ( »appliances« ), einzelne Dateien hinzufügen ( »files« ) sowie nach Abschluss der eigentlichen Installation Kommandos ausführen ( »post« ). Im Detail sind diese Möglichkeiten in [3] beschrieben.

Ähnliche Artikel

comments powered by Disqus
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