我需要在导入之前或在第一次运行之前对创建的VM进行一些自定义。例如,我需要清除陈旧的NAT端口转发规则,这些规则往往留在具有相同名称的框之后,删除一些磁盘控制器(将现有磁盘重新连接到IDE控制器而不是SATA,以便与不了解SATA的旧操作系统修订版兼容等)。
Vagrant代码中有pre-boot
和pre-import
个事件,但我想知道在启动创建的vm之前是否有任何方法可以运行一些virtualbox / vagrant命令?
答案 0 :(得分:2)
是的,要运行VBoxManage命令,请参阅“VBoxManage自定义”一章in the docs。默认情况下,命令在pre-boot
阶段运行,但您也可以将阶段指定为第一个参数:
Vagrant.configure("2") do |config|
# ...
config.vm.provider "virtualbox" do |v|
v.customize "pre-boot", ["modifyvm", :id, "--cpus", 2]
end
end
但我认为问题在于你没有一种简单可靠的方法来获取磁盘映像路径。