Я пытаюсь запустить apt-get dist-upgrade через поваренную книгу. Я знаю, что запускать 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
который больше похож на сценарий оболочки, чем на поварскую книгу. Добавление 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
Это не идемпотентное действие, так что то, что у вас есть, - лучшее, что вы можете сделать, может быть, с еще несколькими охранниками или чем-то, что нужно запускать только один раз в день или еще много чего.