Vagrant-Box mit Veewee erstellen

Veewee ist ein Tool, welches zum Erstellen von virtuellen Maschinen dient. Prinzipiell kann veewee dabei mit vmware (fusion), virtualbox, kvm und parallels umgehen. Besonders hilfreich ist das Werkzeug gerade bei der Erstellung für Baseboxen für Vagrant.

Vagrantbox.es stellt sehr viele hilfreiche Baseboxen zur Verwendung mit Vagrant bereit. Will man aber ein wenig mehr Individualität oder hat mit einer Basebox ein Problem, dass sich nicht einfach lösen lässt (so wie ich mit der fedora19 basebox und port-forwarding), so kann man sich selbst mit dem Bereitstellen einer Basebox behelfen.

Damit man möglichst einfach eine Box bauen kann, stellt Veewee seinerseits Templates dar. Diese Templates geben beispielsweise an, wo sich die ISO-Datei befindet, aus welcher eine Box erstellt werden soll (beispielsweise centos64-minimal.iso). Daraus baut veewee dann eine VM, startet diese, nimmt die Installation vor, konfiguriert das System (mit post-install scripts, welche man auch selbst verändern kann), verifiziert das System für Vagrant (ist ein Vagrant-User vorhanden? Ist SSH installiert?) und baut aus der VM eine BOX-Datei. Diese kann man dann per vagrant box add (und anschließendem vagrant init) verwenden, oder aber im Web zur Verfügung stellen.

Eine Schritt-für-Schritt Anleitung

So weit, so gut, doch wie sieht das Ganze denn genau aus?
Das verdeutlichen wir durch ein Schritt-für-Schritt Beispiel. Beginnen wir mit der Veewee Installation. Dazu führen wir per git einen Clone des veewee-Repositories auf github durch.

$ cd /opt
$ git clone https://github.com/jedi4ever/veewee.git $ cd veewee $ gem install bundler $ bundle install $ alias veewee="bundle exec veewee"

Anschließend ist veewee installiert und kann auch schon verwendet werden. Wollen wir eine neue Basebox für fedora19 bauen, so verwenden wir das vorhandene Template:

veewee vbox define 'fedora19-x86_64' 'Fedora-19-x86_64'

Dieser Befehl erstellt im Verzeichnis „definitions“ einige Dateien, welche zur Konfiguration der Box herangezogen werden. In der Datei „definitions/fedora19-x86_84/definitions.rb“ befinden sich beispielsweise Einstellungen, wieviel CPU-Kerne die neue VM verwenden darf, wie viel Arbeitsspeicher belegt und wieviel Festplattenplatz reserviert werden kann. Hier findet sich aber auch die Auflistung der ausgeführten PostInstallations-Shell-Skripte. Will man beispielsweise kein puppet in der erstellen Box zur Verfügung stellen, so kann man die betreffende Datei einfach auskommentieren. Auch kann man hier die Reihenfolge der Skripte abändern oder einfach ein neues Skript hinzufügen.
In den einzelnen Shell-Skripten, welche nach der VM-OS-Installation aufgerufen werden, kann man aber auch selbst Hand anlegen und gewünschte Software installieren. Beispielsweise kann man in der Datei „definitions/fedora19-x86_84/base.sh“ einen weiteren Texteditor installieren:

yum -y install nano

Für die Konfiguration der VM ist aber noch eine weitere Datei von großer Bedeutung. Im so genannten Kickstart-File (ks.cfg) kann eingestellt werden, ob SELinux aktiviert werden soll, wie sich die iptables Firewall verhalten soll und welche Zeitzone und welches Keyboard-Layout verwendet werden soll.

Nachdem alle Einstellungen in den Dateien vorgenommen wurden, kann die virtuelle Maschine erstellt werden. Dazu dient der Befehl

$ veewee vbox build 'fedora19-x86_64'

Abhängig von der verfügbaren Bandbreite und der allgemeinen Systemperformance kann dieser Befehl einige Zeit laufen (von ein paar Minuten bis hin zu mehreren Stunden). Während der Abarbeitung bootet veewee die VM und wenn nicht mit der Option „–nogui“ gestartet wurde, kann man das auch grafisch mitverfolgen. Wenn man möchte, kann man nach der eigentlichen Installation auch direkt in der virtuellen Umgebung Änderungen vornehmen…

Ist man mit der Konfiguration zufrieden, so kann man die Box noch verifizieren. Damit ist gemeint, dass veewee die Konfiguration dahingehend prüft, ob diese dann mit vagrant verwendet werden kann. Das bedeutet zum Beispiel, dass nach einem vagrant-Benutzer gesucht wird und ob dieser sudo-Befehle ausführen kann. Ebenso wird die Netzwerk- und Softwarekonfiguration geprüft. Dabei ist es durchaus erlaubt, wenn einige Fehler auftreten (puppet, ruby und chef müssen beispielsweise nicht installiert werden. Das bedeutet dann aber auch, dass mit der entstehenden Box keine Pupper/Chef-Provisioners verwendet werden können). Der Befehl für die Verfikation sieht dabei wie folgt aus:

veewee vbox validate 'fedora19-x86_64'

Terten keine Fehler auf (oder wurden diese bereits erwartet – etwa bei fehlender ruby Installation), kann man die Box exportieren (also eine BOX-Datei erstellen). Dazu dient folgender Befehle:

veewee vbox export 'fedora19-x86_64'

Damit hat man jetzt in /opt/vewee eine .box-Datei liegen, welche man auf einen Webserver spielen kann und auch in vagrant verwenden kann. Für letztere Verwendung kann man die Datei natürlich auch per

vagrant box add 'fedora19-x86_64' '/opt/veewee/fedora19-x86_64.box'

hinzufügen.

Ein Gedanke zu „Vagrant-Box mit Veewee erstellen“

Schreibe einen Kommentar