当我登录到服务器(Ubuntu 12.04)时,会出现以下消息:
12 packages can be updated.
10 updates are security updates.
当然,通过手动方式解决它很容易(apt-get update && apt-get upgrade),但由于服务器部分地由Chef配置,我想知道是否有一种好的方法将其程序化地包含到配方中?
"apt" cookbook似乎没有提供相关内容 :(
干杯。
当我登录到服务器(Ubuntu 12.04)时,会出现以下消息:
12 packages can be updated.
10 updates are security updates.
当然,通过手动方式解决它很容易(apt-get update && apt-get upgrade),但由于服务器部分地由Chef配置,我想知道是否有一种好的方法将其程序化地包含到配方中?
"apt" cookbook似乎没有提供相关内容 :(
干杯。
自动化软件包更新/升级通常是不明智的,因为如果没有经过充分测试,这显然会破坏应用程序。
解决此问题的一种方法是使用食谱锁定或将仓库保留在指定版本,并在推出到生产环境之前进行彻底的开发测试。
在Amazon Linux上,您可以检索当前状态下yum存储库的唯一网址。因此,您可以在开发中运行更新/升级,找出唯一的网址,然后将其推送到生产环境。这将防止Chef更新到任何比您测试的新软件包更高版本的软件包。
我对Ubuntu和apt-get不太熟悉,但似乎可以通过Pinning或Holding来实现我所说的内容: https://help.ubuntu.com/community/PinningHowto
因此,总结一下,您想要升级/更新一个开发机器,您测试它,找出仓库状态并将所有软件包冻结到这些版本。然后将生产环境的仓库也冻结到这些状态。然后,只需像Draco提到的那样运行'apt-get -y upgrade'即可。
我只是在自己的配方中执行了execute 'apt-get -y upgrade'
。
这里有一个自动化打补丁的食谱可供使用: https://github.com/bflad/chef-auto-patch/。
同时也有一篇关于如何将 Chef 集成到您的补丁流程中的文章: https://www.chef.io/solutions/patch-management/
其主要步骤如下: