【问题标题】:Running pre-import customizations in Vagrant在 Vagrant 中运行导入前自定义
【发布时间】:2014-02-06 00:27:42
【问题描述】:

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

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

【问题讨论】:

    标签: virtualbox vagrant


    【解决方案1】:

    是的,要运行 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
    

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

    【讨论】:

    • 其实找磁盘很简单:dpaste.com/1587145。找到磁盘UUID应该够用了,我测试了vboxmanage storage-related cmds接受storage UUID。
    • 啊,太好了! Vagrant 甚至可能支持一些 :disk_uuid 魔法。
    • @John,您可以重新发布以前在 dpaste 上的任何内容,可能是作为要点或更持久的东西吗?遇到操作系统 UUID 与 VBoxManage 报告的不匹配的问题,因此尝试协调两者。
    猜你喜欢
    • 1970-01-01
    • 2021-12-03
    • 2022-06-11
    • 1970-01-01
    • 2018-03-02
    • 2012-01-12
    • 2021-06-14
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多