Kat*_*ych 10 virtualbox virtual-machine vagrant vagrantfile
我想指定Vagrant将存储我的VM的文件夹.
我只需要一个VM,所以我不想修改VirtualBox.xml defaultMachineFolder
或更改VBOX_USER_HOME
环境变量.
在Vagrantfile中执行此操作的正确方法是什么?
我已经尝试添加以下行:
config.vm.provider "virtualbox" do |vb|
vb.customize ["createvm", "--name", "name", "--basefolder", "path"]
end
Run Code Online (Sandbox Code Playgroud)
它在我指定的路径上创建VM文件夹,但它也在~/VirtualBox VMs
文件夹中复制它
,并将错误的VM路径添加到VirtualBox.xml.
我也尝试过使用群组:
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--groups", "/subpath"]
end
Run Code Online (Sandbox Code Playgroud)
但它只创建了一个子文件夹~/VirtualBox VMs
.
请帮忙!
这并不容易,但至少我学到了一件好事.即使你找不到你想要的答案,我也会把它作为答案.(提前抱歉)
首先:
它在我指定的路径上创建VM文件夹,但它也在〜/ VirtualBox VMs文件夹中复制它,并将错误的VM路径添加到VirtualBox.xml.
是的,默认情况下,当您在流浪者输出中看到类似的东西时
==> default: Importing base box 'ubuntu/trusty64'...
Run Code Online (Sandbox Code Playgroud)
在幕后,vagrant运行类似的东西VBoxManage import ....
,如果你还定义了一个createvm
属性,除了流浪盒导入之外它还会运行它,所以它会创建重复.请注意,provider
块中设置的属性不会覆盖默认属性,而是在默认值之后运行.
如此流浪儿呢VBoxManage import .... --disk /path
; 从VBoxManage运行时,很容易更改为磁盘指定的路径并将VM文件保存在任何位置.
但是当你在这里查看vagrant代码target path
时VBoxManage import -n /path_to_your_box_ovf_file
,它会在运行时获取属性的输出,并从那里构建路径,因此它将是任何VM的相同路径文件夹.
所以在你已经提到的方法之上,定义你可以使用的路径 VBoxManage setproperty machinefolder
VBoxManage setproperty machinefolder /my_custom_path
vagrant up
VBoxManage setproperty machinefolder default
Run Code Online (Sandbox Code Playgroud)
将在custom_path文件夹中创建VM文件,然后将VM文件夹重新初始化为其默认位置.(我没有尝试,但因为Vagrantfile是一个ruby脚本,你甚至可以VBoxManage setproperty
从Vagrantfile 运行)