2016-03-31 15 views
9

Ich möchte Ordner angeben, in denen Vagrant meine VM speichert.Store Vagrant VM in benutzerdefinierten Ordner

Ich brauche es nur für eine VM, also möchte ich nicht ändern VirtualBox.xml defaultMachineFolder oder ändern VBOX_USER_HOME Umgebungsvariable.

Was ist der richtige Weg, es in Vagrantfile zu tun?

Ich habe bereits versucht, die folgenden Zeilen hinzufügen:

config.vm.provider "virtualbox" do |vb| 
    vb.customize ["createvm", "--name", "name", "--basefolder", "path"] 
end 

Es VM-Ordner auf dem Pfad erstellt ich angegeben, aber es es auch im ~/VirtualBox VMs Ordnern kopieren und den falschen VM Pfad hinzufügen die VirtualBox.xml.

Auch habe ich versucht, Gruppen zu verwenden:

config.vm.provider :virtualbox do |vb| 
    vb.customize ["modifyvm", :id, "--groups", "/subpath"] 
end 

Aber es schafft nur einen Unterordner im ~/VirtualBox VMs.

Bitte helfen!

+1

Dies ist eine gute Frage.Ich weiß, du hast bereits gesagt, dass du den 'defaultMachineFolder' nicht verschieben willst, aber das scheint dein Problem zu lösen. Weitere Informationen finden Sie in dieser SO-Antwort (http://stackoverflow.com/a/36114947/5240327). –

Antwort

5

Das war nicht einfach, aber zumindest lerne ich eine gute Sache. Ich werde es als eine Antwort machen, auch wenn Sie nicht die Antwort finden, die Sie erwartet haben. (Sorry im Voraus)

so zuerst:

Es schafft VM-Ordner auf dem Weg, den ich festgelegt, aber es kann auch Duplikat in den ~/VirtualBox VMs Ordnern und fügen Sie den falschen VM Pfad zu den VirtualBox.xml.

ja, standardmäßig, wenn Sie in der Vagabund Ausgabe etwas sehen wie

==> default: Importing base box 'ubuntu/trusty64'... 

hinter den Kulissen läuft Vagabund so etwas wie VBoxManage import .... so, wenn Sie auch eine createvm Eigenschaft definieren, es es zusätzlich laufen zum Vagabunden-Box-Import, damit er doppelt erstellt wird. Beachten Sie, dass die im Block provider festgelegte Eigenschaft nicht die Standardeigenschaft außer Kraft setzt, sondern nach der Standardeinstellung ausgeführt wird.

so vagrant tut VBoxManage import .... --disk /path; Beim Ausführen von VBoxManage ist es einfach, den für die Festplatte angegebenen Pfad zu ändern und die VM-Datei überall zu speichern.

jedoch, wenn Sie die vagrant code here aussehen nimmt es die Ausgabe der target path Eigenschaft, wenn VBoxManage import -n /path_to_your_box_ovf_file läuft und es baut den Weg von dort so wird es der gleiche Weg Ordner für jeden VM sein.

so oben auf die Möglichkeiten, wie Sie bereits erwähnt, den Pfad definieren Sie wird erstellt VBoxManage setproperty machinefolder

VBoxManage setproperty machinefolder /my_custom_path 
vagrant up 
VBoxManage setproperty machinefolder default 

die VM-Dateien können in Ihrem custom_path sein Ordner dann neu initialisiert Sie die VM-Ordner in seinem Standardverzeichnis . (Ich habe nicht versucht, aber als Vagrantfile ist ein Ruby-Skript können Sie sogar die VBoxManage setproperty von der Vagrantfile ausführen)

Verwandte Themen