pipe理许多CentOS服务器的软件包更新的良好做法

作为我工作的一部分,我pipe理几台CentOS 5服务器,使用木偶作为主要设置。 我们大约有一半的服务器有一个标准化的设置来托pipe各种Django站点,而其余的则是应用程序的混乱。

我正在逐步整理我们的托pipe实践,现在我已经着手了解如何在操作系统级别pipe理安全更新。 我担心有一个cron工作正在进行yum -y update但也不希望每个服务器都要及时检查,并检查每个包含更新的包,因为这需要一段时间。

所以我想知道是否有任何好的捷径或工作实践,可以最大限度地减less所涉及的风险, 尽量减less我需要花费的时间。 或者换句话说,有什么工具或做法可以自动执行大量的工作,同时还能够控制。

到目前为止,我已经决定的步骤是:

  • 禁用所有的第三方存储库,并build立我们自己的存储库,所以我可以控制通过那里更新。
  • 我们已经为我们的生产服务器(大部分)准备了服务器,在那里我可以testing(但是有多lesstesting足够testing?)

另外请注意,我已经看过yum安全插件,但在CentOS上不起作用 。

那么如何pipe理运行异构应用程序的大量CentOS服务器的更新呢?

在我的大部分环境中,通常是一个kickstart和post-install脚本,以便在那个时候启动主系统并更新。 我通常会有一个本地回购,每天或每周与一个CentOS镜像进行同步。 我倾向于冻结内核包在任何当前的安装时间和个别或根据需要更新包。 很多时候,我的服务器都有外围设备,驱动程序与内核版本紧密相连,所以这是一个考虑因素。

CentOS 5已经成熟到不需要不断更新的地步。 但是请记住,CentOS 5正在收尾。 更新速度有所减慢,更新的性质更接近缺陷修正,更less更新主要function更改。

所以在这个特定的情况下,你可以做的第一件事是build立一个本地镜像/回购。 使用您现有的configurationpipe理来控制对第三方回购的访问。 也许安排政策yum更新关键或公共服务(ssh,http,ftp,dovecot等)其他一切将需要testing,但我感觉大多数环境不运行完全更新/修补系统。

有很多工具可以帮助这个! 它通常包系统和哪些包到哪里由configurationpipe理处理。 这些工具通常涵盖的不仅仅是yum和rpms,而且会为您节省时间,避免许多麻烦!

我最熟悉的工具是我用来pipe理环境中几乎所有configuration的木偶。 以下是一些专门pipe理yum的木偶示例:

http://people.redhat.com/dlutter/puppet-app.html

目前有很多configurationpipe理工具可用,这些工​​具有相当大的用户组:

在一个环境中实施这些将会增加你的生活。 它减less了来自configuration不当的系统的头痛问题,并允许轻松升级/更新。 大多数这些工具还可以提供一些审计级别的function,这可以大大减lessconfiguration错误的修复时间。

关于您的testing问题,我一直在使用我们指导某些客户加载到的分段环境(通常是beta客户或生产stream量的一小部分)。 我们通常让这个集群运行新的代码至less几天,最多一周(取决于变化的严重性),然后再部署到生产环境。 通常我发现这个设置最好,如果你试图找出大多数错误需要发现的时间。 在大量使用的系统中,这可能需要几个小时的时间,在我看到的大多数环境中,足够长的时间才能发现在临时/质量保证中偶然发现的错误。

关于testing的一个非常重要的部分是数据/使用的复制。 你提到你有大部分生产硬件的版本。 他们是否也有相同的生产数据副本? 你可以重放任何生产负荷吗? 您甚至可以使用stream量镜像将其作为生产群集的一部分吗? 这通常成为企业愿意花费在testing/质量保证上的资源量之间的直接权衡。 越多的testing越好,尽量不要自我限制(在合理范围内),看看企业会支持什么(然后find办法做更多的10%)。