【问题标题】:How to run security updates with Chef?如何使用 Chef 运行安全更新?
【发布时间】:2012-12-05 19:36:07
【问题描述】:

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

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

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

"apt" cookbook 似乎没有提供相关的东西:(

干杯。

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

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

    解决此问题的一种方法是锁定说明书或将存储库保存在指定版本,然后在开发中对其进行全面测试,然后再将其推出生产。

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

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

    总而言之,您想要升级/更新开发机器,测试它,找出 repo 状态,然后将所有包冻结到这些版本。然后你将 prod 的 repo 冻结到这些状态。然后你只需按照 Draco 提到的方式让食谱运行“apt-get -y upgrade”。

    【讨论】:

    • 我同意在没有事先验证的情况下持续应用更新是个坏主意。但是假设您已经在开发环境中测试了更新,那么如何将这些更新传播到生产环境中呢?我正在考虑创建某种对所有软件包进行更新/升级的食谱,并且 repo 版本维护在 data_bag 上。您可以修改 data_bag 上的版本,下次执行配方时,它将运行更新/升级。你怎么看?
    【解决方案2】:

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

    【讨论】:

    • 对,但这真的是“常识”吗? “最佳实践”?
    • 但这有什么问题呢?它简单、易于管理并且可以满足需要。
    • 但它没有回答这是否真的是最佳实践 - 由于这不是任何官方食谱的一部分,它似乎不是;)
    • @DracoAter 为什么盲目升级软件包不好?因为新版本的软件包可能会发生重大更改,这将对在该服务器上运行的服务产生不利影响。一般来说,您应该只在必要时更新服务器,而不是因为有可用的更新,甚至安全更新,因为这些可以通过其他方式缓解。
    • 不,如果你问我,那就有点过分了。仅在必要时才更新是由于被动管理而令人头疼的秘诀。更新应定期执行,并应纳入系统管理和开发。 Chef 使您能够在实时环境的影子副本上空运行更新并测试您能想到的所有内容。接受这一点,并向自己介绍带有回滚场景的每周更新管理。使用包定义中的版本来使用 Chef 自动化整个过程。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      它的要点是:

      • 识别漏洞。
      • 测试更新。
      • 推出补丁。
      • 监控意外副作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-28
        • 2013-10-28
        • 1970-01-01
        • 2014-09-23
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多