VMs mit Vagrant erstellen

Seite 2: Einsatz

Inhaltsverzeichnis

Im einfachsten Fall ist das bereits alles, was für das Erzeugen und Starten einer virtuellen Maschine erforderlich ist: Ruft man auf der Konsole nun das Kommando

$ vagrant up

auf, legt Vagrant ein Unterverzeichnis namens .vagrant an, erzeugt darin die gewünschte virtuelle Maschine und startet sie anschließend. Bei Bedarf lädt es das benötigte Abbild zuvor von der in Vagrantfile angegebenen URL herunter. Da sich das Verzeichnis .vagrant und dessen Inhalt jederzeit durch das Ausführen des Kommandos vagrant up wiederherstellen lassen, kann man es von der
Versionsverwaltung ausschließen.

Im Normalfall gibt das Programm nach kurzer Zeit die Meldung

[default] Machine booted and ready!

aus, was bedeutet, dass die virtuelle Maschine erfolgreich erstellt und gestartet werden konnte. Auf manchen Systemen bricht der Vorgang jedoch mit einer Fehlermeldung ab, die besagt, dass sich die virtuelle Maschine in einem ungültigen Zustand befindet:

The guest machine entered an invalid state while 
waiting for it to boot. [...]

Die Meldung ist in der Regel auf ein Problem mit der Virtualisierung der Hardware zurückzuführen und lässt sich durch das Abschalten dieser beheben. Dazu muss man die Datei Vagrantfile um einen neuen Konfigurationsabschnitt ergänzen, in dem man Einstellungen für VirtualBox vornehmen kann:

Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"

config.vm.provider :virtualbox do |vb|
vb.customize [ "modifyvm", :id, "--hwvirtex", "off" ]
end
end

In dem Abschnitt ist es zudem möglich, unter anderem die Anzahl der Prozessoren und die Menge des Arbeitsspeichers für die virtuelle Maschine vorzugeben: Dazu sind die zwei folgenden Zeilen erforderlich, wobei die Parameter wunschgemäß anzupassen sind.

Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"

config.vm.provider :virtualbox do |vb|
vb.customize [ "modifyvm", :id, "--hwvirtex", "off" ]
vb.customize [ "modifyvm", :id, "--cpus", 2 ]
vb.customize [ "modifyvm", :id, "--memory", 2048 ]
end
end

Danach ist es ratsam, das Verzeichnis .vagrant samt Inhalt zu löschen und das Kommando vagrant up erneut auszuführen. Außer der Meldung, dass die virtuelle Maschine gestartet wurde, sieht man von ihr zunächst nichts. Um zu überprüfen, ob sie wirklich läuft, genügt es, das Kommando

$ vagrant status

auf der Konsole auszuführen. Es meldet als Status wie erwartet running und gibt zudem einige Hinweise aus, wie man die virtuelle Maschine wieder beenden kann: Das Kommando

$ vagrant halt

fährt die virtuelle Maschine herunter,

$ vagrant suspend

friert sie hingegen ein. Den jeweiligen Status kann man danach auf dem nun bekannten Weg abfragen. Um eine Maschine erneut zu starten, genügt es, das Kommando vagrant up abermals auszuführen.

Gelegentlich gelingt es Vagrant nicht, eine virtuelle Maschine beim Aufruf von vagrant halt sauber herunterzufahren. In dem Fall kann man das Herunterfahren mit dem zusätzlichen Parameter --force erzwingen.

Benötigt man eine virtuelle Maschine nicht länger, lässt sie sich mit dem Kommando

$ vagrant destroy

entfernen. Bei Bedarf wird sie zuvor angehalten. Auch hier lässt sich optional der Parameter --force übergeben.

Für den Zugriff auf die virtuelle Maschine leitet Vagrant den Port 22 auf den Port 2222 des Wirtsystems weiter, sodass sich eine SSH-Verbindung herstellen lässt. Um den Benutzernamen und den Port nicht stets von Hand eingeben zu müssen, steht zudem ein Kommando zur Verfügung, das die Anmeldung automatisch vornimmt:

$ vagrant ssh 

Wenn die Verbindung zur virtuellen Maschine hergestellt ist, kann man sie ohne Einschränkungen verwenden und für die weitere Arbeit konfigurieren. Das Verzeichnis des Wirtsystems, das die Datei Vagrantfile enthält, bindet Vagrant in der virtuellen Maschine als Pfad /vagrant ein. Damit ist ein einfacher Austausch von Dateien zwischen Wirt und Gast möglich.