我们有许多需要修补的 Debian 服务器,随着数量的增加,手动修补成为一个问题。我正在研究的是一种将补丁从中央位置推送到服务器并对其运行情况进行某种报告的方法。我相信应该有一种相对简单的方法来做到这一点,而无需购买第三方工具。我想到了 Puppet,但也许还有其他想法可以更好地服务于这个目的?
我们有许多需要修补的 Debian 服务器,随着数量的增加,手动修补成为一个问题。我正在研究的是一种将补丁从中央位置推送到服务器并对其运行情况进行某种报告的方法。我相信应该有一种相对简单的方法来做到这一点,而无需购买第三方工具。我想到了 Puppet,但也许还有其他想法可以更好地服务于这个目的?
Puppet 很棒,但并没有真正解决这个问题。
什么应该起作用(我已经完成了理论,但还没有推出)是使用 cron-apt 与 debmashal 管理的存储库相结合,以批准 cron-apt 随后将部署的补丁。
Debmarshal 离开了谷歌,并且有一个关于它的技术讲座:
http://code.google.com/p/debmarshal/
http://www.youtube.com/watch?v=L3hRToC23mQ
我们正在尝试使用 puppet 推出大多数安全更新。我们只用它来推出我们不关心的包。例如,我们不使用它来升级 MySQL,因为我们需要安排停机时间,并且应该手动完成。另一方面,我们有像 Mutt 这样的升级,可以升级而无需太多担心。我们通过创建一个将包名称作为名称和版本参数的定义来做到这一点。我们没有使用本机“包”类型实现这一点,因为可能会与其他清单发生冲突,并且无法仅升级已安装的包。无论如何,Puppet 都会安装该软件包。
我们目前使用这个解决方案的问题是我们要跟踪三个不同的分布(Jaunty、Hardy 和 Dapper),并且使用 apticron 的输出来保持文件是最新的有点耗时,但希望这两个问题都可以相当容易地解决,或者至少大大减少,通过一些脚本直接从电子邮件中自动创建清单文件。这是下一步。如果这可行,那么我会推荐它作为一种有效的方法。如果没有,那可能是工作量太大了。
我不确定你有多少 Debian 服务器,所以很难说这是否适合你,但我们使用 SSHD 和基于密钥的身份验证、ClusterSSH 和 cron-apt 来做到这一点。为我们两打左右的 Debian 机器启动 ClusterSSH 并执行一个
aptitude update && aptitude upgrade
(或任何需要的 apt 命令)非常简单。因为 cron-apt 设置为自动下载,但不安装适当的 .deb 文件,只需查看可用的补丁程序,确定我们要安装的补丁程序,然后将所需的 aptitude 命令发送到所有主机一举升级它们。