我正在玩 Rudder(http://www.rudder-project.org/site/),但似乎看不到我想要的选项。
我希望检查“节点”上的所有软件包是否有更新,然后进行升级,相当于 Debian 机器上的“apt-get update && apt-get upgrade”。
我看到了有关包管理的指令,但它们似乎都是用于更新/安装单独命名的包,而不是更新每个节点上当前的所有包。
实现我想要的目标的最好方法是什么?
答案1
我认为实现此目的的最佳方法是使用技术编辑器创建一个技术,并使用“/usr/bin/apt-get update && /usr/bin/apt-get upgrade -y”的“命令执行结果”,其中 0 表示成功,1 表示已修复
请注意,这将在每次运行时执行,这可能不是您想要的,但您可以使用条件仅在晚上或特定日期范围内运行它。
您还可以查看“作业调度程序”指令,或使用“调度”方法创建一种技术,在其中您可以定义要执行的某些操作,例如 cron 作业...
答案2
实际上,使用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 来帮助我正确地完成这项工作,但还没有开始行动……