I am trying to run apt-get dist-upgrade via chef cookbook. I am aware that running apt-get upgrade in cookbook is not generally recommended (https://stackoverflow.com/questions/15080876/apt-get-update-and-apt-get-upgrade-in-chef#15093460), but we control our ubuntu mirrors and any packages will get into that mirror only after thorough testing, so running dist-upgrade is fine.
What I have currently in my cookbook is
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
which looks more like a shell script rather than a chef cookbook. Adding apt cookbook will run apt-get update
but I didn't find a better way of doing things for apt dist-upgrade.
Even this https://supermarket.chef.io/cookbooks/apt-upgrade-once cookbook does in the same fashion.
How can this be done in a better manner via chef cookbook?
I am looking for answers via cookbooks only not by cron/unattendedupgrades (As I am aware doing things via cron/unattendedupgrades).
Update:
apt update can be better run by
apt_update 'update' do
action :update
end
Это не идемпотентное действие, так что то, что у вас есть, - лучшее, что вы можете сделать, может быть, с еще несколькими охранниками или чем-то еще, чтобы бегать только раз в день или еще много чего.