14

当我登录到服务器(Ubuntu 12.04)时,我收到以下消息:

12 packages can be updated.
10 updates are security updates.

“手动”解决它当然很容易(apt-get update && apt-get upgrade),但由于服务器(部分)配备了 Chef,我想知道是否有一种以编程方式将其包含在内的好方法食谱?

apt”食谱似乎没有提供相关的东西:(

干杯。

4

4 回答 4

8

自动化包更新/升级通常是一个坏主意,因为如果没有首先正确测试,这显然会破坏应用程序。

解决此问题的一种方法是使用说明书锁定或将存储库保存在指定版本,然后在将其推向生产之前在开发中对其进行彻底测试。

在 Amazon Linux 上,您可以检索 yum 存储库当前状态的唯一 url。因此,您可以在 dev 上运行更新/升级,找出唯一的 url 并将其推送到 prod。这将阻止 Chef 更新到任何比您测试过的新包。

我对 Ubuntu 和 apt-get 不太熟悉,但看起来你可以用 Pinning 或 Hold 做我所说的:https ://help.ubuntu.com/community/PinningHowto

所以总而言之,你想升级/更新开发机器,你测试它,找出 repo 状态是什么,并将所有包冻结到这些版本。然后你将 prod 的 repo 冻结到这些状态。然后你只需让食谱运行'apt-get -y upgrade',就像 Draco 提到的那样。

于 2013-01-25T17:52:47.387 回答
2

我只有execute 'apt-get -y upgrade'自己的食谱。

于 2012-12-19T08:04:27.857 回答
2

一方面,我同意“自动化软件包更新/升级通常是一个坏主意,因为如果没有首先正确测试,这显然会破坏应用程序。” 我相信这是学术上的答案。

然而,我的经验是,自动加载安全更新很少会导致问题,这应该与丢失或延迟关键安全修复的可能性进行权衡。(我们从未允许自动重启,我想这就是我们划清界限的地方。)是否进行自动安全更新的决定应该基于您的实际情况。没有一个万能的答案。

如果您想运行自动更新,有几本可用的食谱(至少适用于 Ubuntu),但不幸的是,似乎没有一本是特别最新的,这有点讽刺。这是一个示例: unattended_upgrades

于 2016-11-18T03:59:01.923 回答
1

有一个自动补丁食谱可用于此:https ://github.com/bflad/chef-auto-patch/ 。

还有一篇关于如何将 Chef 集成到您的补丁过程中的 Chef 帖子: https ://www.chef.io/solutions/patch-management/

它的要点是:

  • 识别漏洞。
  • 测试更新。
  • 推出补丁。
  • 监测意外的副作用。
于 2015-07-09T14:57:06.583 回答