2016-03-31 2 views
9

Я хочу указать папку, где Vagrant будет хранить мою виртуальную машину.Магазин Vagrant VM в пользовательской папке

Мне это нужно только для одной виртуальной машины, поэтому я не хочу изменять VirtualBox.xml defaultMachineFolder или изменять переменную среды VBOX_USER_HOME.

Каков правильный способ сделать это в Vagrantfile?

Я уже пытался добавить следующие строки:

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

Это создает папку VM на пути я указал, но и дублировать его в папке ~/VirtualBox VMs и добавьте неправильный путь к VM VirtualBox.xml.

Также я пытался использовать группы:

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

Но это только создает вложенную папку в ~/VirtualBox VMs.

Пожалуйста, помогите!

+1

Это отличный вопрос.Я знаю, что вы уже сказали, что не хотите переместить 'defaultMachineFolder', но похоже, что это решит вашу проблему. См. [Этот ответ SO] (http://stackoverflow.com/a/36114947/5240327) для получения дополнительной информации. –

ответ

5

Это было нелегко, но, по крайней мере, я изучаю хорошую вещь. Я сделаю это как ответ, даже если вы не найдете ответ, который ожидаете. (Извините заранее)

так первая:

Это создает папку VM на пути я указал, но и дублировать его в папке ~/VirtualBox виртуальных машин и добавить неправильный путь VM к VirtualBox.xml.

да, по умолчанию, когда вы видите в бродячей выходе что-то вроде

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

за кулисами, бродяга работает что-то вроде VBoxManage import .... так, если вы также определить createvm свойство, оно будет запускать его в дополнение для импорта бродячих коробок, поэтому он создает дубликат. Обратите внимание, что свойство, установленное в блоке provider, не переопределяет значение по умолчанию, а работает по умолчанию.

так бродяжничает VBoxManage import .... --disk /path; при запуске из VBoxManage легко изменить путь, указанный для диска, и сохранить файл VM в любом месте.

Однако, когда вы смотрите vagrant code here он принимает выход target path имущества при запуске VBoxManage import -n /path_to_your_box_ovf_file и строит путь оттуда так будет та же папка путь для любой виртуальной машины.

так на вершине пути вы уже упоминалось, чтобы определить путь, который вы можете использовать файлы VBoxManage setproperty machinefolder

VBoxManage setproperty machinefolder /my_custom_path 
vagrant up 
VBoxManage setproperty machinefolder default 

ВМ будет создает в папке custom_path то инициализируется папку VM в папку по умолчанию , (Я не пытался, но поскольку Vagrantfile - это рубиновый скрипт, вы можете даже запустить VBoxManage setproperty из Vagrantfile)

Смежные вопросы