这并不容易,但至少我学到了一些好东西。即使您没有找到您期望的答案,我也会将其作为答案。 (提前抱歉)
所以首先:
它在我指定的路径上创建 VM 文件夹,但它也复制它
在 ~/VirtualBox VMs 文件夹中并将错误的 VM 路径添加到
VirtualBox.xml。
是的,默认情况下,当你在 vagrant 输出中看到类似的内容时
==> default: Importing base box 'ubuntu/trusty64'...
在幕后,流浪者运行类似VBoxManage import ....
所以如果你还定义了createvm
属性,除了 vagrant box 导入之外,它还会运行它,因此它会创建重复项。注意设置的属性provider
块不会覆盖默认块,而是在默认块之后运行。
流浪汉就是这样VBoxManage import .... --disk /path
;从 VBoxManage 运行时,可以轻松更改磁盘指定路径并将 VM 文件保存在任何位置。
然而当你看流浪代码在这里 https://github.com/mitchellh/vagrant/blob/master/plugins/providers/virtualbox/driver/version_5_0.rb#L272它需要的输出target path
运行时的属性VBoxManage import -n /path_to_your_box_ovf_file
它从那里构建路径所以对于任何虚拟机来说它将是相同的路径文件夹.
因此,除了您已经提到的方法之外,要定义您可以使用的路径VBoxManage setproperty machinefolder https://www.virtualbox.org/manual/ch08.html#vboxmanage-setproperty
VBoxManage setproperty machinefolder /my_custom_path
vagrant up
VBoxManage setproperty machinefolder default
VM 文件将在您的 custom_path 文件夹中创建,然后您将 VM 文件夹重新初始化到其默认位置。 (我没有尝试,但由于 Vagrantfile 是一个 ruby 脚本,你甚至可以运行VBoxManage setproperty
来自 Vagrantfile)