我正在尝试通过 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
这不是一个幂等动作,所以你能做的就是最好的,也许加上一些警卫或者一些每天只运行一次的事情等等。