2016-03-31 35 views
9

Vagrant'ın sanal makinemi depolayacağı klasörü belirtmek istiyorum.Vagrant VM'yi özel klasörde saklayın

Yalnızca bir VM için gerekiyor, bu yüzden VirtualBox.xml defaultMachineFolder'u değiştirmek veya VBOX_USER_HOME ortam değişkenini değiştirmek istemiyorum.

Vagrantfile'de bunu yapmanın doğru yolu nedir?

Zaten şu satırları ekleyin denedim: Ben Belirtilen yolda VM klasörü oluşturur

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

, ama aynı zamanda ~/VirtualBox VMs klasörüne çoğaltmak ve yanlış VM yolunu eklemek VirtualBox.xml. Ayrıca ben grupları kullanmak için denedim

:

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

Ama sadece ~/VirtualBox VMs bir alt klasör oluşturur.

Lütfen yardım edin!

+1

Bu harika bir soru."DefaultMachineFolder" öğesini taşımak istemediğini ancak sorunun çözüleceğini düşündüğünüzü zaten söylediğini biliyorum. Daha fazla bilgi için [bu SO cevabı] 'na bakın (http://stackoverflow.com/a/36114947/5240327). –

cevap

5

Bu kolay olmadı ama en azından iyi bir şey öğrendim. Beklediğiniz cevabı bulamıyor olsanız bile bunu bir cevap olarak yapacağım. bu yüzden ilk (üzgün içinde avans)

:

Ben belirtilen yolda VM klasörü oluşturur, ama aynı zamanda ~/VirtualBox VM klasöründe o çoğaltmak ve yanlış VM yolunu eklemek VirtualBox.xml.

evet varsayılan olarak sahne arkasında

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

gibi serseri çıktı şey gördüğünde, serseri bir de createvm özellik tanımlamak eğer VBoxManage import .... gibi bir şey bu yüzden, bu ek olarak çalıştırmak çalışacağı vagrant kutusuna içe aktarma yapmak için çift oluşturuyor. provider satırında ayarlanan özelliğin varsayılanı geçersiz kılmadığını, ancak varsayılan değerden sonra çalıştığını unutmayın. VBoxManage import .... --disk /path; VBoxManage import .... --disk /path; VBoxManage import .... --disk /path; VBoxManage'den çalışırken, disk için belirtilen yolu değiştirmek ve VM dosyasını herhangi bir yere kaydetmek kolaydır. Eğer vagrant code here baktığınızda VBoxManage import -n /path_to_your_box_ovf_file çalıştırırken

Ancak target path mülkiyet çıkışını alır ve bu nedenle herhangi bir VM için aynı yolu klasör olacak orada dan yolunu oluşturur. böylece zaten bahsedilen yollardan üstünde

, kendi custom_path klasöründe oluşturur olacak VBoxManage setproperty machinefolder

VBoxManage setproperty machinefolder /my_custom_path 
vagrant up 
VBoxManage setproperty machinefolder default 

VM dosyalarını kullanabilirsiniz yolunu tanımlamak için o zaman varsayılan konumuna VM klasörü yeniden başlatıldı . (Ben denemedim ama Vagrantfile bir ruby ​​senaryosu olarak bile Vagrantfile'dan VBoxManage setproperty'u çalıştırabilirsin)