将 Vagrant VM 存储在自定义文件夹中
Store Vagrant VM in custom folder
我想指定 Vagrant 将存储我的 VM 的文件夹。
我只需要一个 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
.
中创建一个子文件夹
请帮忙!
这并不容易,但至少我学到了一件好事。即使您找不到预期的答案,我也会将其作为答案。 (提前抱歉)
首先:
It creates VM folder on the path I specified, but it also duplicate it
in the ~/VirtualBox VMs folder and add the wrong VM path to the
VirtualBox.xml.
是的,默认情况下,当您在 vagrant 输出中看到类似
的内容时
==> default: Importing base box 'ubuntu/trusty64'...
在幕后,vagrant 运行 类似于 VBoxManage import ....
所以如果你还定义了一个 createvm
属性,它还会 运行 它另外到 vagrant box import 以便它创建重复项。请注意 provider
块中设置的 属性 不会覆盖默认值,而是 运行 在默认值之后。
vagrant 也是如此VBoxManage import .... --disk /path
; 运行从 VBoxManage 管理时,很容易更改为磁盘指定的路径并将 VM 文件保存在任何地方。
但是,当您查看 vagrant code here 时,它会在 运行 宁 VBoxManage import -n /path_to_your_box_ovf_file
时获取 target path
属性 的输出,并从那里构建路径因此对于任何 VM 来说它都是相同的路径文件夹。
所以在您已经提到的方法之上,要定义路径,您可以使用 VBoxManage setproperty machinefolder
VBoxManage setproperty machinefolder /my_custom_path
vagrant up
VBoxManage setproperty machinefolder default
VM 文件将在您的 custom_path 文件夹中创建,然后您将 VM 文件夹重新初始化到其默认位置。 (我没有尝试,但由于 Vagrantfile 是一个 ruby 脚本,你甚至可以 运行 来自 Vagrantfile 的 VBoxManage setproperty
)
我想指定 Vagrant 将存储我的 VM 的文件夹。
我只需要一个 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
.
请帮忙!
这并不容易,但至少我学到了一件好事。即使您找不到预期的答案,我也会将其作为答案。 (提前抱歉)
首先:
It creates VM folder on the path I specified, but it also duplicate it in the ~/VirtualBox VMs folder and add the wrong VM path to the VirtualBox.xml.
是的,默认情况下,当您在 vagrant 输出中看到类似
的内容时==> default: Importing base box 'ubuntu/trusty64'...
在幕后,vagrant 运行 类似于 VBoxManage import ....
所以如果你还定义了一个 createvm
属性,它还会 运行 它另外到 vagrant box import 以便它创建重复项。请注意 provider
块中设置的 属性 不会覆盖默认值,而是 运行 在默认值之后。
vagrant 也是如此VBoxManage import .... --disk /path
; 运行从 VBoxManage 管理时,很容易更改为磁盘指定的路径并将 VM 文件保存在任何地方。
但是,当您查看 vagrant code here 时,它会在 运行 宁 VBoxManage import -n /path_to_your_box_ovf_file
时获取 target path
属性 的输出,并从那里构建路径因此对于任何 VM 来说它都是相同的路径文件夹。
所以在您已经提到的方法之上,要定义路径,您可以使用 VBoxManage setproperty machinefolder
VBoxManage setproperty machinefolder /my_custom_path
vagrant up
VBoxManage setproperty machinefolder default
VM 文件将在您的 custom_path 文件夹中创建,然后您将 VM 文件夹重新初始化到其默认位置。 (我没有尝试,但由于 Vagrantfile 是一个 ruby 脚本,你甚至可以 运行 来自 Vagrantfile 的 VBoxManage setproperty
)