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

我安装了一个VirtualBox,然后在其中安装了Ubuntu 12.10 Server Base OS。 我已经安装了各种PHP软件包和其他包。 我的朋友推荐我使用stream浪汉,所以我可以轻松地与我的队友分享我的设置。

因为我当前的VirtualBox虚拟机不是用vagrant up创build的,所以我不知道如何打包。 在Vagrant的文件谈论包装,但开始说:

在完成本页其余部分的工作之前,请确保虚拟环境是通过运行vagrantbuild立起来的。

就我而言,我现有的虚拟机并不是最初使用stream浪汉创build的。

如何打包现有的虚拟机?

要认识到的重要的事情(和stream浪的文件不太清楚)是有两个包装的“口味”:

  1. 你所说的“入门”中的包装指南假设你已经从一个stream浪的底盒开始,并用vagrant up其初始化,而你却没有。 这允许您打包您对stream浪者基地箱做的任何定制
  2. 如果您从头开始,或从“简单的”VirtualBox虚拟机开始,则需要创build一个stream浪的基础框 。 你应该很好地遵循基于Ubuntu的指南 。

有一个使用Oracle Enterprise Linux 从零开始创buildstream浪盒的详细指南 ,这可能会有所帮助。 你也可以试试VeeWee 。

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

更新

以上是指Vagrant 1.0。 事情在1.1中略有改变,尤其是文档已被改写:

  1. vagrant package 命令允许您以1.0中相同的方式打包您对现有的stream浪者基地箱进行的任何定制
  2. 1.1中已经删除了用于创build基本框的文档 ,但是文档build议该过程保持不变,但是现在需要额外的metadata.json文件,因为Vagrant 1.1支持多个提供者 。

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

任何VirtualBox都可以打包成stream浪基盒(基本上是带有Vagrantfile OVA)。

问题是 :虚拟机不是根据stream浪者的基础箱子build立的,如果你没有在vagrantbox.es上分享它,那么它会没事的。

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

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

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

请记住,如果你想和其他人分享stream浪基地箱子,最好是阅读文档,并遵循这些规则,使其他人更容易。

虽然不是一个完整的答案,但我认为你可以从文档中得到你需要的东西,这是相当广泛的。 我相信vagrant up只是一个方便的方法来build立一个stream浪的“盒子”。 对于符合Vagrant的盒子有一些要求。 他们在这里描述…

文件: stream浪者 – 基地箱子

一个盒子所需的裸骨头如下…

  • 用于共享文件夹,端口转发等的VirtualBox Guest Additions
  • SSH与基于密钥的身份validation支持stream浪的用户
  • Ruby和RubyGems来安装Chef和Puppet
  • 厨师和木偶提供支持

一旦一个盒子符合这些要求,它应该只是一个使用vagrant package命令来创build一个便携式安装的问题…

更多文档: Vagrant – 盒子

所以,虽然我没有一个完整的答案,但从来没有这样做过,我认为可以让你的安装进入一个可以打包和发布的状态。

就个人而言,包装过程的虚幻的方面是 – 基础开关。 我怀疑可能是很多人的情况。 检查出vagrant package --help帮助描述。 文档似乎也没有提到它。

我发现了这两个伟大的,深入的,一步一步的指南,从最初的VirtualBox机器创buildVagrant箱子:

  1. 如何build立一个CentOSstream浪基地箱
  2. 从头开始为Vagrant创build基础框

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

如上所述 – http://sysadm.pp.ua/linux/sistemy-virtualizacii/vagrant-box-creation.html您需要导入和打包三个框:;

  • 安装客人补充
  • 无密码sudo
  • SSH访问所以你只需要login到你的Ubuntu 12.10,安装Vbox Guest添加,添加用户“vagrant”与无密码的sudo访问。

看看更新的文件,find你的箱子应该具有的所有特性,如果你想要它无缝地与stream浪者工作:

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

你也应该看看一个叫做veewee的伟大项目,它允许你从scractch脚本生成一个stream浪者箱子。 这意味着veewee会从您的发行版中实际下载ISO,并将其安装在处女虚拟机上,然后configuration并安装所有依赖项。

它配备了许多不同types的Linux发行版的食谱:

https://github.com/jedi4ever/veewee

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

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

您所指的“入门指南”中的包装指南假设您已经从一个stream浪的底盒开始,并用stream浪的方式进行初始化。 这允许您打包您对stream浪者基地箱做的任何定制。

如果您从头开始,或从“简单的” VirtualBox虚拟机开始,则需要创build一个stream浪的基础框。 你应该很好地遵循基于Ubuntu的指南。