在Vagrant中运行导入前自定义

时间:2014-02-05 13:51:20

标签: virtualbox vagrant

我需要在导入之前或在第一次运行之前对创建的VM进行一些自定义。例如,我需要清除陈旧的NAT端口转发规则,这些规则往往留在具有相同名称的框之后,删除一些磁盘控制器(将现有磁盘重新连接到IDE控制器而不是SATA,以便与不了解SATA的旧操作系统修订版兼容等)。

Vagrant代码中有pre-bootpre-import个事件,但我想知道在启动创建的vm之前是否有任何方法可以运行一些virtualbox / vagrant命令?

1 个答案:

答案 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

但我认为问题在于你没有一种简单可靠的方法来获取磁盘映像路径。