我正在尝试构建一个系统,它将运行一个短寿命(CI和测试构建)的软件组件,这是强制性的,根据我的要求,每个人都生活在一个私人主机。我把这个定义也包括了半虚拟化选项,因为它似乎可以帮我省去很多麻烦。
我正在开发一台Mac电脑,所以几乎所有的技术都过时了,libvirt和quemu等技术对我来说是行不通的。不过,我正在计划部署到Debian;因此,只要我能够编写主机的配置以及它的来宾域的脚本,在Debian上运行的任何东西都会回到桌面上。
我的预期设置是,我可以使用引导Debian安装程序,这意味着在启动时,机器会自动提供(厨师、木偶、Babushka,不要介意,真的)-而其中的一部分应该构建一个模板rootfs,可以用来引导容器。容器本身也需要准备,以便当容器出现时,它知道必须做什么工作,并且可以完成工作,然后退出。
简而言之,我需要的工作流程如下:
我已经到了一个阶段,我尝试了以下几点,并放弃了它们,原因如下:
用于主机
老实说,我不确定人们需要使用什么技术来将VM从零提升到运行、工作和有用的系统。在我看来,似乎有三个步骤:( a)操作系统,b)系统配置(用户等),然后是c)文件系统更改。
用于客户(虚拟机):
debootstrap创建的只读根目录,以及LXC容器上的一个特殊分区,其中包含要为这个特定实例所做的工作(作业清单)。插入有关构建操作系统、引导、创建用户、从git签出软件和执行工作的所有常见警告。我真的不知道该用什么工具,似乎这个问题应该得到很好的解决。但我就是找不到真正开始的地方。
大多数人似乎认为,对于主机,我应该选择一种虚拟化技术,将机器引导到工作状态,然后对其进行快照(libvirt似乎是这方面的最爱)。使用快照显示用于测试或在生产中的任何后续安装。
对于客户机器来说,lxc似乎提供了最简单的选择,除了返回一个容器,并在以后通过控制台连接到它的所有当前内核中都被破坏,而稳定Debian可用的lxc的最新版本已经超过18个月了,并且缺乏许多广泛使用的usef功能。
通常,我是一个应用程序开发人员,而且我不经常使用服务器级技术(我确信SF会将这个问题标记为“过于主观”),但我真的不确定应该使用哪些工具。
最后,我知道有一个类似的堆叠项目(travis-ci.org)正在使用Vagrant。这似乎是一个相当钝的工具,大型的,缓慢的,面向红宝石的工具,专为用于关键服务基础设施的测试am的小型桌面配置设计,但我也认识其中的一些人,他们比我聪明,所以他们可能就放弃了。
任何帮助都很感激。
发布于 2013-02-08 17:22:28
一些想法:
发布于 2013-02-08 17:44:29
在阅读你的帖子时,我一直在想,流浪汉和詹金斯带着迷航插件会很好地满足你的需求。任何能够实际处理VM数量的盒子都不应该注意到维护环境的工具的开销。
发布于 2013-02-12 09:01:05
使用一些在苹果和Debian上有效的东西,我唯一尝试过的就是虚拟盒。这里使用虚拟盒的好处是,您可以在mac系统上构建一个VM,并使用相同版本的虚拟盒将其复制到Debian系统上,然后它就会启动。
拥有数百个使用虚拟盒的vms,听起来就像是在花费大量的时间,使用vboxmange接口为每个vm编写必要的唯一信息。就像硬盘上的uuid,网络接口上的mac地址。
如果基本系统将使用相同的软件配置,您可以在虚拟框中创建系统的快速射击并将其冻结。这样就不会在冻结的快照上写入任何更改,而是写入新的临时存储区域。然后放弃VM,还原回快速射击,您正在处理一个干净的系统,而不需要在测试期间进行任何更改。所有这些都可以使用vboxmange编写脚本。
使用您的快速射击,您还可以复制该VM映像数百份。使用vboxmange脚本接口来制作副本,在重要的方式(例如,uuid和mac地址)中是唯一的。然后,有一个启动脚本调用任何更改,信任您需要应用到您的VM上进行测试,或者运行各种测试。
https://serverfault.com/questions/476909
复制相似问题