当我登录服务器(Ubuntu 12.04)时,我收到以下消息:
12 packages can be updated.
10 updates are security updates.
“手动”解决它很容易(apt-get update&& apt-get upgrade),但由于服务器(部分)配备了Chef,我想知道是否有好处如何以编程方式将其包含在食谱中?
"apt" cookbook似乎没有提供相关内容:(
干杯。
答案 0 :(得分:8)
自动化软件包更新/升级通常是个坏主意,因为如果没有先进行正确测试,这显然会破坏应用程序。
解决此问题的一种方法是将菜谱锁定或将存储库保存在指定版本,然后在将其推送到生产环境之前对其进行全面测试。
在Amazon Linux上,您可以在其当前状态下检索yum存储库的唯一URL。因此,您可以在dev上运行更新/升级,找出唯一的URL并将其推送到prod。这将阻止Chef更新到任何比你测试过的更新的包。
我对Ubuntu和apt-get并不熟悉,但看起来你可以用Pinning或者持有我正在谈论的内容:https://help.ubuntu.com/community/PinningHowto
总而言之,您希望升级/更新开发机器,进行测试,找出repo状态,并将所有软件包冻结到这些版本。然后你将prod的回购冻结到那些州。然后你就像Draco提到的那样,让菜谱运行'apt-get -y upgrade'。
答案 1 :(得分:3)
我在自己的食谱中只有execute 'apt-get -y upgrade'
。
答案 2 :(得分:1)
一方面,我同意"自动化软件包更新/升级通常是一个坏主意,因为如果没有首先正确测试,这显然会破坏应用程序。"我相信这是学术上的答案。
但是我的经验是,自动加载安全更新很少会导致问题,应该权衡丢失或延迟关键安全修复的可能性。 (我们从未允许自动重启,我想这就是我们划线的地方。)是否自动安全更新的决定应该基于您的情况的实际情况。没有一个通用的答案。
如果你想运行自动更新,有几本可用的烹饪书(至少对于Ubuntu而言),但不幸的是,似乎没有一个特别是最新的,这有点讽刺。这是一个例子: unattended_upgrades
答案 3 :(得分:0)
有一个自动补丁食谱可供选择:https://github.com/bflad/chef-auto-patch/。
还有一篇关于如何将Chef整合到补丁过程中的Chef帖子: https://www.chef.io/solutions/patch-management/
它的要点是: