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