首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >短期私有VMs技术

短期私有VMs技术
EN

Server Fault用户
提问于 2013-02-08 16:06:21
回答 3查看 519关注 0票数 8

我正在尝试构建一个系统,它将运行一个短寿命(CI和测试构建)的软件组件,这是强制性的,根据我的要求,每个人都生活在一个私人主机。我把这个定义也包括了半虚拟化选项,因为它似乎可以帮我省去很多麻烦。

我正在开发一台Mac电脑,所以几乎所有的技术都过时了,libvirt和quemu等技术对我来说是行不通的。不过,我正在计划部署到Debian;因此,只要我能够编写主机的配置以及它的来宾域的脚本,在Debian上运行的任何东西都会回到桌面上。

我的预期设置是,我可以使用引导Debian安装程序,这意味着在启动时,机器会自动提供(厨师、木偶、Babushka,不要介意,真的)-而其中的一部分应该构建一个模板rootfs,可以用来引导容器。容器本身也需要准备,以便当容器出现时,它知道必须做什么工作,并且可以完成工作,然后退出。

简而言之,我需要的工作流程如下:

  1. 启动一台机器(虚拟的或其他的),并让它准备好工作。
  2. 这项工作应由厨师/傀儡/babushka/等安装的脚本完成。
  3. 当工作到来时,应该启动一个虚拟机来完成这项工作。
  4. VM应该完成工作,退出并将其资源释放到父/主机。(重要的是,在合理的硬件上至少要达到数百个来宾VM)

我已经到了一个阶段,我尝试了以下几点,并放弃了它们,原因如下:

用于主机

  1. LinuxCOE支持的Debian微ISO映像(坏消息:根本不工作)(“找不到内核模块”)(因为Instalinux映像与FTP存储库不同步,显然这个解决方案非常脆弱,它也不允许安装后有太多空间,并将已知的SSH密钥、主机密钥等丢到机器上,看起来就像着火了,忘记了,最终我会有一台正在运行的机器,但无法访问它)。
  2. 预种子(坏:同样的问题,与上面一样,除非安装通常完成,因为在ISO和FTP存储库之间没有内核差异。后安装的范围仍然有限。好:绝对可靠和可重复,很容易扔到Mac上的任何VM技术栈上,或者在一台裸金属机器上,在任何地方都可以工作,但是我无法将它安装到足够的位置)。
  3. 构建一个rootfs并将其编译为一个可引导的硬盘映像的各种方法(不好:我所能做的事情非常脆弱,很难安装到一台真正的机器上,而且是一个复杂的构建过程。好的:如果我能让它正常工作,这似乎提供了最大的空间,可以用ssh键、主机密钥、主机名、从Git安装的软件等将机器预先配置到给定的规范,但接下来的问题将是如何打包它以供分发,或者如何编写它的脚本。)

老实说,我不确定人们需要使用什么技术来将VM从零提升到运行、工作和有用的系统。在我看来,似乎有三个步骤:( a)操作系统,b)系统配置(用户等),然后是c)文件系统更改。

用于客户(虚拟机):

  1. 很多事情,主要是我认为这里的答案是用debootstrap创建的只读根目录,以及LXC容器上的一个特殊分区,其中包含要为这个特定实例所做的工作(作业清单)。插入有关构建操作系统、引导、创建用户、从git签出软件和执行工作的所有常见警告。

我真的不知道该用什么工具,似乎这个问题应该得到很好的解决。但我就是找不到真正开始的地方。

大多数人似乎认为,对于主机,我应该选择一种虚拟化技术,将机器引导到工作状态,然后对其进行快照(libvirt似乎是这方面的最爱)。使用快照显示用于测试或在生产中的任何后续安装。

对于客户机器来说,lxc似乎提供了最简单的选择,除了返回一个容器,并在以后通过控制台连接到它的所有当前内核中都被破坏,而稳定Debian可用的lxc的最新版本已经超过18个月了,并且缺乏许多广泛使用的usef功能。

通常,我是一个应用程序开发人员,而且我不经常使用服务器级技术(我确信SF会将这个问题标记为“过于主观”),但我真的不确定应该使用哪些工具。

最后,我知道有一个类似的堆叠项目(travis-ci.org)正在使用Vagrant。这似乎是一个相当钝的工具,大型的,缓慢的,面向红宝石的工具,专为用于关键服务基础设施的测试am的小型桌面配置设计,但我也认识其中的一些人,他们比我聪明,所以他们可能就放弃了。

任何帮助都很感激。

EN

回答 3

Server Fault用户

发布于 2013-02-08 17:22:28

一些想法:

  1. 您的观点“合理硬件上的数百个VM”让我(没有个人经验)想到了那些通过网络引导或通过NFS共享大部分卷空间(/usr)的VM。取决于你的VM有多相似。
  2. 令人难以置信的是,“我所能得到的工作是极其脆弱的”。你能更准确地说出问题是什么吗?
  3. “将很难安装到一个真正的机器”,你的意思是“困难”比什么,到想要的1点击解决方案的VM创建?我会问:这有多难,多久会发生一次?为各自的硬件重新创建initrd有什么区别?
  4. “然而,我不能后安装它足够”,你想要/需要什么,为什么不起作用?您可以将下载脚本作为引导过程的一部分。VM通过DHCP (硬配置为VM MAC地址)获得其IP,Samba根据客户机的IP地址向VM提供不同的后安装脚本。
票数 2
EN

Server Fault用户

发布于 2013-02-08 17:44:29

在阅读你的帖子时,我一直在想,流浪汉和詹金斯带着迷航插件会很好地满足你的需求。任何能够实际处理VM数量的盒子都不应该注意到维护环境的工具的开销。

票数 1
EN

Server Fault用户

发布于 2013-02-12 09:01:05

使用一些在苹果和Debian上有效的东西,我唯一尝试过的就是虚拟盒。这里使用虚拟盒的好处是,您可以在mac系统上构建一个VM,并使用相同版本的虚拟盒将其复制到Debian系统上,然后它就会启动。

拥有数百个使用虚拟盒的vms,听起来就像是在花费大量的时间,使用vboxmange接口为每个vm编写必要的唯一信息。就像硬盘上的uuid,网络接口上的mac地址。

如果基本系统将使用相同的软件配置,您可以在虚拟框中创建系统的快速射击并将其冻结。这样就不会在冻结的快照上写入任何更改,而是写入新的临时存储区域。然后放弃VM,还原回快速射击,您正在处理一个干净的系统,而不需要在测试期间进行任何更改。所有这些都可以使用vboxmange编写脚本。

使用您的快速射击,您还可以复制该VM映像数百份。使用vboxmange脚本接口来制作副本,在重要的方式(例如,uuid和mac地址)中是唯一的。然后,有一个启动脚本调用任何更改,信任您需要应用到您的VM上进行测试,或者运行各种测试。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/476909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档