vagrant

Warum Vagrant eine neue VM erstellt anstatt die vorhandene aus dem Ruhezustand zu holen

Wer mit Vagrant arbeitet kann sich an den Vorteilen einer Virtual Machine erfreuen. Einmal gestartet baut sich je nach Konfiguration das System auf, installiert über die Provisioners die notwendige Software die man zusätzlich braucht und nach einer vom Umfang der Software abhängigen Wartezeit hat man ein fertiges Entwicklungssystem. Hiermit ist es für jeden sehr einfach sich ein System aufzubauen welches dem auf der Productionseite ähnlich oder sogar gleich aufgebaut ist. Und wenn die Virtual Machine nicht mehr verwendet wird, kann sie in den Ruhezustand versetzt werden um sie am nächsten Tag ohne lange zu warten wieder zu starten.

Die Überraschung war jedoch groß als ich heute morgen mein System aus dem Ruhezustand zurückholen wollte aber Vagrant eher der Meinung war das System komplett neu aufsetzen zu müssen. Ein kurzer Blick in meine VirtualBox verriet mir allerdings das mein eigentliches System sich noch immer im Suspended Mode befand diese jedoch beim Starten nicht mehr verwendete. Wieso wurde nicht mehr die vorhandene Virtual Machine verwendet?

Welche der vorhandenen VMs von Vagrant verwendet wird legt die Datei .vagrant fest welche sich im selben Verzeichnis wie die Vagrantfile-Datei befindet. In einem Texteditor geöffnet offenbart sich dem Betrachter ein recht schlichtes Json Format:

{"active":{"default":"bbaefe94-1c67-414d-80e7-5bc68d38882f"}}

Der Wert des default-Keys gibt an welche der vorhandenen VMs verwendet werden soll, jedoch kann man aus dem Wert nicht erkennen welche der hinterlegten VMs beim Start angesprochen werden. Sollte aus irgendeinem Grund die Datei korrumpiert oder vielleicht gelöscht werden, so wird beim nächsten vagrant up eine neue VM aufgesetzt auch wenn sich auf eurer Festplatte immer noch die ursprüngliche VM befindet. Um an den Bezeichner eurer gewünschten VM zu kommen bietet VirtualBox hierfür den Konsolenbefehl VBoxManage an. Mit dem folgenden Aufruf listet ihr nicht nur alle vorhandenen Virtual Machines auf sondern auch ihre dazugehörenden Bezeichner:

C:Program FilesOracleVirtualBoxVBoxManage.exe list vms

Legt nun eine .vagrant Datei in eurem Projektverzeichnis an in dem sich auch das dazugehörende Vagrantfile befindet und fügt den Json-Code mit dem ermittelten Bezeichner eurer VM dazu. Beim nächsten Start über Vagrant wird nun die VM verwendet deren Bezeichner in die .vagrant eingetragen wurde.

Diese Vorgehensweise habe ich mit der Vagrant-Version 1.0.2 durchgeführt. Ob dieser Lösungsweg auch noch bei zukünftigen Versionen funktioniert bleibt abzuwarten.

Hinterlasse einen Kommentar

1 Kommentar auf "Warum Vagrant eine neue VM erstellt anstatt die vorhandene aus dem Ruhezustand zu holen"

Benachrichtige mich zu:
avatar

Sortiert nach:   neuste | älteste | beste Bewertung
Thorsten Weber
Webmaster
5 Jahre 6 Monate her

Auch praktisch, wenn ein wild gewordenes Skript einem alle Dateien im Arbeitsverzeichnis weggelöscht hat man danach die laufende VM nicht mehr steuern kann…
Funktioniert auch problemlos mit Vagrant 1.0.3.

wpDiscuz
Weitere Beiträge zum Thema
Expires Header mit TYPO3
Flagbit in den USA: Magento Hackathon und imagine eCommerce
Flagbit auf der MagentoLive Germany in München
Danke an unseren neuen Kunden LA BIOSTHETIQUE Paris