我有一组装有 Red Hat 的服务器和一个正在永久开发的内部软件(它由许多带有配置等的文件组成)。
服务器有多种类型:
- 发展
- 测试
- 后测试
- 生产
每个类别最多有 10 个服务器,但每个服务器独立工作,不依赖于其他服务器。此外,在每个流中,我可以有一个小的颠覆,这些颠覆在 cvs 存储库中标记。所以我不能只为所有测试服务器构建一个testing.rpm,并为所有生产构建一个prod.rpm。
无论如何,我可以看到几种方法来做到这一点:
- 创建自己的 rpm 存储库,自动为每种服务器类型及其子版本构建一组 rpm 包,并使用 cron 更新包。
- 在每台服务器上使用具有自己配置的 shell 脚本来执行此操作
- 手动更新:)
哪一个更好?或者他们都完全错了,还有其他方法吗? :)
答案1
您应该考虑多种事项:
- 开始使用持续集成软件来构建您的软件,例如 Jenkins、Buildbot 或其他软件。
- 为您的阶段创建专用存储库 - 根据您的评论,它可能有助于至少对开发阶段的部署,可能有助于通过 CI 工具进行测试阶段,以及通过自动更新进行后续阶段。
- 使用类似的东西太空行走或无人值守升级或类似工具来使您的系统保持最新状态。不要使用手动 cron 脚本或登录系统。您还可以使用 puppet 而不是 spacewalk 以确保安装了最新版本的软件包。
- 使用 puppet/chef/... 作为配置和包规范。例如,您可以简单地指定使用 puppet 安装最新的软件包版本,或者将特定的存储库添加到所有测试服务器等。
最重要的是尽可能地自动化一切。您应该使用像 puppet 或 Chef 这样的配置管理系统,因为这可以简化并自动化新系统的部署,例如您只需运行 puppet 一次,服务器就可以像生产系统一样设置。