如何pipe理20台虚拟机的configuration和自动部署

我有一个TeamCity构build服务器,大约20个“构build代理”,Windows和MacOS机器。

通常,我需要安装更新版本的XCode或VisualStudio或其他工具。 不得不在所有机器上手动执行此操作都是无聊且容易出错的。 我试图找出什么是实现以下最好的方法:

  • 可以方便地更改系统configuration,而无需在所有机器上手动执行。
  • 可以方便地将新机器添加到组中。
  • 确保机器尽可能相同

这些机器正在执行的工作是相当繁重的,完全消耗8个内核,并且在IO上非常沉重。 如果解决scheme包括花钱,这很好。

有几个方向,你可以去这个。 这将取决于您所拥有的基础架构以及您愿意支付和/或部署的软件。

有这么多独立的build设机器的目的是什么? 是保持代码项目彼此隔离,还是通过额外的资源来最大化构build速度? 或者,构build机器实际上是networking上的客户端工作站,除了构build之外,还用于其他目的?

如果要保持构build环境的隔离,那么虚拟化就是一条很好的途径。 您可以将20台构build机器作为单独的虚拟机升级,而无需为每台虚拟机购买/configuration硬件。

另一方面,如果是为了提高性能,将构build机捆绑到虚拟机上并没有多大意义,因为主机上的虚拟机争夺该主机的CPU,内存和磁盘可用性。 通过添加额外的硬件单元,您最好添加最大数量的CPU内核,Gbs RAM和磁盘主轴。

至于是否需要在所有机器上更新软件包: – 要在多台Windows机器上进行统一的软件pipe理而不需要重新部署操作系统,请查看Microsoft的System Centerconfigurationpipe理器和System Center Essentials。 他们听起来对你的要求是正确的: http : //www.microsoft.com/systemcenter/en/us/products.aspx – 对于你要改变系统'图像'的整个系统的部署,将该映像部署到您的构build机器上,可以使用虚拟机使用您正在使用的任何虚拟化产品中内置的function(ESX或Hyper-V上的“模板”)来执行此操作。 或者,您可以查看像Windows部署服务的PXE启动构build解决scheme。

无论你如何走这个,你最大的痛苦点可能是Windows和MacOS混合使用你的制造机器。 所有这些操作系统的标准操作系统都是能够统一更新所有操作系统的先决条件。

http://www.puppetlabs.com/

我不确定Windows支持的范围,但是常见问题在最新版本中提到了基本的Windows支持。 如果我们在谈论Linux,这个工具将是完美的,所以如果Windows实现是可比较的,那可能是完美的。 至于Mac机器,他们是基于BSD的,所以你可能也可以使用木偶的Linux方面。

我使用Puppet完成了与Linux提到的类似的事情。 在傀儡中,你通过声明应该如何组合的方式build立一个网站策略。 在正常的设置中,你有一个Puppet master,它的站点策略可以从puppet工作站\机器的频率进行轮询。 “木偶”看看他们遇到了什么要求,然后通过木偶大师的政策告诉他们应该做什么。 滚动更新将是对木偶大师的政策的一个简单的修改,但采取一粒盐。 我不知道windowsfunction的程度。


另一个stream行的是CfEngine: http ://www.cfengine.org/

http://novosial.org/cfengine/windows/

http://novosial.org/cfengine/macosx/

我没有使用CfEngine,但它是相当受欢迎的。

类似于Acronis Snap Deploy的产品可让您将更新发布到您的IDE等,而无需太多头痛。 你也可以为特定的端点定制构build,所以你可以预先加载设备驱动,但是没有与OSX的兼容性(你可以尝试让它运行在Boot Camp之外)。

如果你有时间来摆弄一下,你可以试试像WPKG这样的免费解决scheme。