【问题标题】:VirtualBox Windows VM to Vagrant Base BoxVirtualBox Windows VM 到 Vagrant Base Box
【发布时间】:2014-07-23 17:34:26
【问题描述】:

我在 VirtualBox 中创建了一个 Windows 8 虚拟机,并进行了自定义设置,并在其上安装了软件。

现在我想把它变成一个 Vagrant Base Box,这样我就可以与团队分享,也可以根据我的定制窗口生成许多其他 VM。

可以做到,我见过Windows Base boxes in vagrantcloud。除了没有关于打包现有 windows virtualbox VM 的文档。

请帮助我提供说明,或链接到说明以从我现有的 Windows 虚拟机创建 Vagrant Base Box。 creating a base box 文档对我没有帮助,因为它适用于 linux。

提前感谢 SO 社区!

【问题讨论】:

    标签: vagrant virtualbox


    【解决方案1】:

    您可能可以通过使用 --base 参数到 vagrant package 来做到这一点。

    首先,在 VirtualBox 的 GUI 上找到 VM 的名称。假设它被称为“Windows”,你发出:

    vagrant package --base Windows --output /path/to/windows.box

    .box 文件将成为您的基本框。您可以使用在本地安装它

    vagrant box install /path/to/windows.box

    或者,您可以使其在服务器上可用,并将其 URL 放在您的 Vagrantfile 中的 config.box_url 参数中。

    【讨论】:

    • 这是打包vagrant创建的VM。我拥有的是一个不是由 vagrant 创建的 VM,我是用 VirtualBox 手动创建的。所以vagrant package 会报错说现在没有虚拟机正在运行。
    • 你试过我的建议了吗?它对我来说很好用,我不明白为什么你的 Vagrant 会有所不同。
    • 如果 vagrant 使用 vagrant up 创建了虚拟机,那么你的 package 命令可以打包它,因为 vagrant 知道虚拟机。就我而言,vagrant 不知道我使用 VirtualBox 创建的 VM。所以当我运行你的命令时,我得到::/System/Vagrant/embedded/gems/gems/vagrant-1.6.3/lib/vagrant/machine.rb:306:in 'id=': undefined method 'children' for nil:NilClass (NoMethodError)
    • 这很奇怪。它对我来说很好。我一开始就理解你的问题:Vagrant 不知道的 VM,打包到一个基本盒子中。你是在 Windows 上运行这个吗?我想说这是 Vagrant 本身的问题,在 freenode 上提交错误和/或提出错误可能是值得的。我在 VB 中创建了一个虚拟机(没有 Vagrant),并将其命名为 --base,而 Vagrant 很好地创建了我的基本框。要检查的另一件事是,您是否正在运行最新版本的 Vagrant 和 VB。
    • 你是对的,我必须从包含 Vagrantfile 的文件夹外运行此命令。我从另一个 git repo 中运行它,其中有一个 vagrant 文件。
    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2014-12-18
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多