我正在玩 Rudder(http://www.rudder-project.org/site/),但似乎看不到我想要的选项。
我希望“节点”上的所有软件包都检查更新然后升级,相当于 Debian 盒子上的“apt-get update && apt-get upgrade”。
我看到了包管理指令,但它们似乎都是用于更新/安装单独命名的包,而不是更新每个节点上当前的所有包。
做我所追求的最好方法是什么?
我正在玩 Rudder(http://www.rudder-project.org/site/),但似乎看不到我想要的选项。
我希望“节点”上的所有软件包都检查更新然后升级,相当于 Debian 盒子上的“apt-get update && apt-get upgrade”。
我看到了包管理指令,但它们似乎都是用于更新/安装单独命名的包,而不是更新每个节点上当前的所有包。
做我所追求的最好方法是什么?
我认为实现这一点的最佳方法是使用技术编辑器创建一种技术,并使用“/usr/bin/apt-get update && /usr/bin/apt-get upgrade -y”创建一个“命令执行结果” 0 表示成功,1 表示已修复
请注意,这将在每次运行时执行,这可能不是您想要的,但您可以使用条件仅在夜间或特定日期范围内运行它。
您还可以查看“Job Scheduler”指令,或使用“Schedule”方法创建一种技术,您可以在其中定义要执行的内容,例如 cron 作业......
实际上,使用
apt-get install -y
不会抑制所有提示。如果您(或代表您的 Rudder!)修改包的任何控制文件,apt-get 将询问您是否要保留配置文件,或者将其替换为包维护者版本。许多人通过使用这样的东西来处理这个问题:
DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get dist-upgrade \ -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold"
请务必注意,如果不进行调查,您将无法安全地执行此操作。上述调用回答“否”,这意味着您必须事先调查包将进行的更改,并确保 rudder 将更改控制文件以包含必要的更改。
例如,有时会在软件包的控制文件中进行关键的安全修复(/etc/ImageMagick-6/policy.xml 就是一个例子)。如果您回答“否”或使用
--force-confold
,则程序包更新不会保护您免受漏洞影响,但程序包版本会提示已实施修复(毕竟,您正在运行带有修复程序的程序包版本)。获得此权利的唯一方法是将您使用的所有软件包安装在验收服务器上,例如在生产前一周对其进行更新,然后收集并查看
.dpkg-new
已创建的所有文件。是的,这是很多工作,是的,没有多少公司这样做,但如果你自动更新,你最好确保你没有掩盖重要的配置更改。我正在琢磨如何使用 Rudder 来帮助我做到这一点的想法,但还没有把铁锹放在地上……