使用源代码构建自动化服务器设置

使用源代码构建自动化服务器设置

我有一套 centOS5.4 服务器,并为其准备了“构建脚本”。该服务器作为 Web 服务器运行,为我们的专有应用程序运行 apache+PHP。

构建脚本基本上会启动我所需的基本操作系统和库的安装。然后我必须进入并复制为我们的环境构建的自定义 apache 和 PHP 二进制文件。最后,我复制我们的源代码存储库。

我对此有几个问题,并希望得到改进的建议:

1) 如果我构建了一台新服务器,我希望一切都与其他服务器相同。但在其他服务器上安装时,我立即进行了 yum 更新。如果我目前在新服务器上执行此操作,则各种库都会有所不同。

2) 手动复制所有内容很麻烦。我即将构建一个 shell 脚本,它将 rscync 和 scp 所有适当的源代码和配置文件,但我想先看看是否有更好的方法。

3) 理想情况下,创建硬盘的磁盘转储映像,然后直接将其 DD 到新服务器上。但是,对于几台服务器,我使用的是镜像模式下的软件 raid。此外,硬件略有不同。这有关系吗?启动回来后,镜像模式 raid 配置会被拾取并在第二个磁盘上重建 raid 配置吗?其他服务器硬件会与我的基本安装冲突吗?

希望有人能突然说出来:“别傻了,只要用户服务器克隆企业 2k++ 即可 ;)”。我会喜欢这个产品的。提前感谢您的回答。

答案1

CentOS 是一款企业级操作系统。软件包更新不会增加主要版本,通常会修复移植的问题,并且在发布前经过充分测试。风险很小。为了降低风险,请自行测试更新,并针对更新测试您的应用程序,然后在整个基础架构中安排定期更新。

将您的应用程序放在文件服务器上并编写构建脚本来部署应用程序。有些人喜欢使用他们喜欢的打包工具来部署内部自定义应用程序,但它可以像 tarball 或递归传输一样简单。

创建映像的做法越来越少见。使用映像时,它通常应用于工作站或具有更多静态构建标准的环境。从历史上看,它被用于构建大量服务器的大型企业,因为从映像构建速度更快。我通常避免在 UNIX 服务器上使用它,但如果构建时间变得异常敏感,我会开始相对于其他方法对其进行基准测试。

有很多配置管理工具您可以使用它来帮助维持您的标准。 太空行走是 RedHat 的开源版本卫星服务器

我在以下文章中更详细地介绍了如何建立服务器构建和标准:

跨多个服务器管理应用程序,或 PXE 与 cfEngine/Chef/Puppet

答案2

1) 只要你定期更新所有机器,就不会出现问题。我知道你提到过设置“机器”。在这里我们使用虚拟化 - 我创建了一个“基础”容器并将其关闭 - 使用 Virtuozzo 提供的工具,我可以反复“克隆”该映像。当我需要更新该克隆时,我会启动它,运行更新,然后将其关闭。虽然这对所有新容器都很有用,但我仍然需要对所有其他正在运行的容器执行更新(尽管我可以选择只保留相同的“过时”映像并进行复制)我实现的是拥有我需要的软件配置(部署和配置所有应用程序、代码、二进制文件等),并且启动“新服务器”是轻而易举的事

2) 您是否考虑过从源代码构建 RPM?虽然编写实际的 spec 文件已被证明是一场噩梦,但如果您只是运行 PHP 代码,实际上没有任何内容需要“编译”,这意味着它只是编写一个 spec 文件,从 RPM 获取源文件并将它们放置在正确的位置,此外还可能为 Apache/您的应用程序运行几个设置脚本。这可以帮助您跟踪哪个服务器正在运行哪个版本的代码,并提供一种更好地维护基础架构的方法。

3)我确实无法回答您问题的这部分。

相关内容