通过 chef 运行 apt upgrade / dist-upgrade 的更好方法

通过 chef 运行 apt upgrade / dist-upgrade 的更好方法

我正在尝试通过 chef cookbook 运行 apt-get dist-upgrade。我知道在 cookbook 中运行 apt-get upgrade 通常不被推荐 (https://stackoverflow.com/questions/15080876/apt-get-update-and-apt-get-upgrade-in-chef#15093460),但我们控制我们的 ubuntu 镜像,任何软件包只有在经过彻底的测试后才会进入该镜像,所以运行 dist-upgrade 是可以的。

我的食谱里目前有

execute "apt update" do
    command "apt-get -y update"
end
execute "apt dist-upgrade" do
    command 'DEBIAN_FRONTEND=noninteractive apt-get -fuy -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade'
end
execute "apt autoremove" do
    command "apt-get -y autoremove"
end

它看起来更像是一个 shell 脚本,而不是 chef cookbook。添加 apt cookbook 将会运行,apt-get update但我没有找到更好的方法来执行 apt dist-upgrade。

甚至这https://supermarket.chef.io/cookbooks/apt-upgrade-once食谱也是以同样的方式进行的。

如何通过厨师食谱更好地做到这一点?

我只是通过食谱寻找答案,而不是通过 cron/unattendedupgrades(因为我知道通过 cron/unattendedupgrades 来做事)。

更新:

apt update 最好这样运行:

apt_update 'update' do
  action :update
end

参考

答案1

这不是一个幂等动作,所以你能做的就是最好的,也许加上一些警卫或者一些每天只运行一次的事情等等。

相关内容