如何打包未使用vagrant up命令创建的现有VM?

时间:2013-01-24 14:42:39

标签: virtual-machine virtualbox packaging vagrant

我安装了一个VirtualBox,然后在其中安装了Ubuntu 12.10 Server Base OS。我已经安装了各种php包和其他包。我的朋友们建议我使用Vagrant,这样我就可以轻松地与队友分享我的设置。

因为我当前的VirtualBox VM不是使用vagrant up创建的,所以我不确定如何打包它。 Vagrant的documentation过来谈论包装,但首先说:

  

在完成本页的其余部分之前,请确保虚拟   环境是通过运行流浪汉来建立的。

在我的情况下,我最初使用vagrant up创建了我现有的VM。

如何打包现有的VM?

9 个答案:

答案 0 :(得分:25)

要实现的重要事项(以及流浪文档对此并不十分清楚)是包装有两种“味道”:

  1. 您所指的packaging guide in "getting started"假定您已从流浪汉基础框开始并使用vagrant up初始化它,而您尚未使用vagrant package。这允许您打包您对流浪者基本框进行的任何自定义
  2. 如果您从头开始或从“普通”VirtualBox VM开始,则需要创建vagrant base box。根据基于Ubuntu的guide,您应该没问题。
  3. 使用Oracle Enterprise Linux有一个detailed guide for creating vagrant boxes from scratch,这可能会有所帮助。您也可以尝试VeeWee

    或者,您可以从Ubuntu 12.10 base box开始并移植自定义项,在这种情况下,您可以使用更简单的第一种打包方式。

    更新

    以上是指Vagrant 1.0。事情在1.1中略有变化,特别是文档已被重写:

    1. metadata.json command允许您以与1.0相同的方式打包您对现有流浪者基本框所做的任何自定义。
    2. documentation for creating base boxes with VirtualBox已在1.1中删除,但docs表示该过程保持不变,但现在另一个{{1}}文件is required正如Vagrant 1.1支持{ {3}}。

答案 1 :(得分:9)

  

vagrant package --output box_name.box --base“vm machine name”   --vagrantfile Vagrantfile

确保正确设置端口转发和SSH密钥。

这可能就是一个很好的例子:https://github.com/okfn/ckan/wiki/How-to-Create-a-CentOS-Vagrant-Base-Box

答案 2 :(得分:7)

任何VirtualBox都可以打包到Vagrant Base Box(基本上是带有Vagrantfile的OVA)。

问题:虚拟机不是根据流浪者基础框构建的,如果你没有在vagrantbox.es上共享它那么它就没事了。

只需安装vagrant(通过gem或安装程序),在VM文件夹中运行以下命令将其打包到.box

注意:对于Vagrant 1.2.x,推荐的安装方法是使用特定于操作系统的软件包。 Ruby Gem不适用于1.2.x。

vagrant package --base ubuntu --output /path/to/ubuntu.box

请记住,如果您想与其他人共享流浪汉基础框,最好阅读文档并遵循这些规则,以便让其他人更容易。

答案 3 :(得分:4)

虽然不是一个完整的答案,但我认为你可以从文档中得到你需要的东西,这是非常广泛的。我相信vagrant up只是设置一个Vagrant“盒子”的便捷方式。对于符合Vagrant的盒子,有许多要求。这里描述了它们......

文档:Vagrant - Base Boxes

盒子所需的裸骨如下......

  • 共享文件夹,端口转发等的VirtualBox Guest Additions
  • SSH为流浪者用户提供基于密钥的身份验证支持
  • Ruby& RubyGems安装Chef和Puppet
  • Chef和Puppet提供支持

一旦盒子符合这些要求,只需使用vagrant package命令来创建便携式安装......

更多文档:Vagrant - Boxes

所以,虽然我没有完整的答案,但从未这样做过,我认为可以让你的安装进入允许你打包和分发它的状态。

答案 4 :(得分:2)

使用'VBoxManage list vms'命令!我只使用sudo来查看没有列出VMS。所以使用命令与正确的认证用户。上面的答案也有助于制作盒子。

答案 5 :(得分:1)

就个人而言,包装过程的虚幻方面是--base开关。我怀疑很多人可能会这样。查看vagrant package --help了解说明。 The documentation似乎也未提及它。

我找到了这两个非常好的,深入的逐步指南,用于从最初为VirtualBox机器的机器创建Vagrant盒子:

  1. How to Create a CentOS Vagrant Base Box
  2. Creating base box from scratch for Vagrant

答案 6 :(得分:1)

如上所述 - http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrant-box-creation.html 您需要三件东西才能导入和打包:

  • 安装访客添加
  • 无密码sudo
  • SSH访问 所以你只需要登录你的Ubuntu 12.10,安装Vbox Guest添加,添加用户" vagrant"无密码sudo访问。

答案 7 :(得分:0)

如果您希望它与vagrant无缝协作,请查看更新的文档以查找您的盒子应具有的所有特性:

http://docs.vagrantup.com/v2/virtualbox/boxes.html

你还应该看一个名为veewee的伟大项目,它允许你从scractch脚本生成流浪盒。这意味着veewee实际上会从您的发行版下载ISO并将其安装在原始虚拟机上,然后配置并安装所有依赖项。

它提供了许多针对所有不同类型的Linux发行版的配方:

https://github.com/jedi4ever/veewee

这里有更多的盒子。他们说他们是木偶盒,但他们与所有提供者(厨师,傀儡和shell脚本)合作:

https://github.com/puppetlabs/puppet-vagrant-boxes

答案 8 :(得分:0)

您所指的“入门指南”中的包装指南假设您已经从一个流浪的基本盒子开始并用流浪剂初始化它,而您没有。这允许您打包对流浪者基本框进行的任何自定义。

如果您从头开始或从“普通”VirtualBox VM开始,就像您一样,您需要创建一个流浪汉基本框。你可以按照基于Ubuntu的指南进行操作。