Хранить Vagrant VM в пользовательской папке
Я хочу указать папку, в которой Vagrant будет хранить мою виртуальную машину.
Мне это нужно только для одной виртуальной машины, поэтому я не хочу изменять VirtualBox.xml defaultMachineFolder
или изменить VBOX_USER_HOME
переменная окружения.
Как правильно сделать это в Vagrantfile?
Я уже пытался добавить следующие строки:
config.vm.provider "virtualbox" do |vb|
vb.customize ["createvm", "--name", "name", "--basefolder", "path"]
end
Он создает папку VM по указанному мною пути, но также дублирует ее в ~/VirtualBox VMs
папку и добавьте неверный путь к виртуальной машине в VirtualBox.xml.
Также я попытался использовать группы:
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--groups", "/subpath"]
end
Но это только создает подпапку в ~/VirtualBox VMs
,
Пожалуйста помоги!
1 ответ
Это было нелегко, но, по крайней мере, я учусь хорошо. Я сделаю это как ответ, даже если вы не найдете ответа, который ожидали. (заранее извините)
Итак, сначала:
Он создает папку виртуальной машины по указанному мною пути, но также дублирует ее в папке виртуальных машин ~/VirtualBox и добавляет неправильный путь виртуальной машины в VirtualBox.xml.
да, по умолчанию, когда вы видите в бродячем выводе что-то вроде
==> default: Importing base box 'ubuntu/trusty64'...
За кулисами Бродяга бежит что-то вроде VBoxManage import ....
так что если вы также определите createvm
Свойство, он будет запускаться в дополнение к импорту vagrant box, поэтому он создает дубликаты. Обратите внимание на свойство, установленное в provider
Блок не переопределяет стандартный, но работает после стандартного.
так бродяга делает VBoxManage import .... --disk /path
; при запуске из VBoxManage легко изменить путь, указанный для диска, и сохранить файл VM в любом месте.
Однако, когда вы смотрите здесь бродячий код, он принимает вывод 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
файлы VM будут созданы в вашей папке custom_path, после чего вы повторно инициализируете папку VM в ее расположение по умолчанию. (Я не пробовал, но так как Vagrantfile представляет собой скрипт ruby, вы можете даже запустить VBoxManage setproperty
из Vagrantfile)