如何管理 20 台虚拟机的配置和自动部署

如何管理 20 台虚拟机的配置和自动部署

我有一个 TeamCity 构建服务器,其中有大约 20 个“构建代理”,包括 Windows 和 MacOS 机器。

我经常需要安装较新版本的 XCode 或 VisualStudio 或其他工具。必须在所有机器上手动执行此操作很无聊,而且容易出错。我正在尝试找出实现以下目标的最佳方法:

  • 可以轻松更改系统配置,而无需在所有机器上手动执行此操作。
  • 可以轻松地将新机器添加到组内。
  • 确保机器尽可能相同

这些机器执行的任务比较繁重,完全占用了 8 个核心,并且 IO 非常繁重。如果解决方案包括花钱,那就没问题。

答案1

有几种方法可供选择。这取决于您现有的基础设施,以及您愿意支付和/或部署的软件。

拥有这么多独立的构建机器的目的是什么?是为了让代码项目彼此隔离,还是利用额外资源最大限度地提高构建速度?或者构建机器实际上是网络上的客户端工作站,除了构建之外还用于其他目的?

如果要保持构建环境的隔离,那么虚拟化是一种不错的选择。您可以将 20 台构建机器作为单独的虚拟机,而无需为每台机器购买/配置硬件。

另一方面,如果是为了性能扩展,将构建机器捆绑到虚拟机上就没那么有意义了,因为主机上的虚拟机会争夺该主机的 CPU、RAM 和磁盘可用性。最好通过添加额外的硬件单元来根据需要添加最大数量的 CPU 核心、Gbs RAM 和磁盘主轴。

至于在所有机器上更新软件包的要求:- 对于在多台 Windows 机器上进行统一软件管理而无需重新部署操作系统,请查看 Microsoft 的 System Center Config Manager 和 System Center Essentials。它们听起来适合您的要求:http://www.microsoft.com/systemcenter/en/us/products.aspx - 对于整个系统部署,您需要对系统“映像”进行更改,然后将该映像重新部署到构建机器,您可以使用虚拟机来执行此操作,无论使用哪种虚拟化产品,都可以使用内置功能 - ESX 或 Hyper-V 上的“模板”。或者,您可以查看 PXE 启动构建解决方案,例如 Windows 部署服务。

不管你选择哪种方式,最大的痛点可能是你的构建机器混合使用 Windows 和 MacOS。所有机器都使用标准操作系统几乎是能够以统一方式更新所有机器的先决条件。

答案2

http://www.puppetlabs.com/

我不确定 Windows 支持的范围,但常见问题解答确实提到了最新版本的基本 Windows 支持。如果我们谈论的是 Linux,那么这个工具将是完美的,因此如果 Windows 实现是可比的,它可能是完美的。至于 Mac 机器,它们是基于 BSD 的,因此您可能也可以在这些机器上使用 puppet 的 Linux 端。

我使用 Puppet 在 Linux 上做过类似的事情。在 Puppet 中,您可以通过声明事物应如何组合在一起来构建站点策略。在正常设置中,您有一个具有站点策略的 Puppet 主机,它会以一定频率从 Puppet 工作站\机器进行轮询。“木偶”会查看它们已满足哪些要求,然后根据 Puppet Master 的策略告诉它们应该做什么。滚动更新将是 Puppet Master 上策略的简单修改,但对此持保留态度。我不知道 Windows 功能的范围。


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

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

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

我没有使用过 CfEngine,但它很流行。

答案3

类似产品Acronis Snap 部署可以让您轻松推出 IDE 等的更新。您还可以为特定端点自定义构建,这样您就可以预加载设备驱动程序,但它与 OSX 不兼容(不过您可以尝试在 Boot Camp 或类似软件上运行它)。

如果你有时间,可以尝试一个免费的解决方案,例如西太平洋太平洋集团

相关内容