Esta não é uma ação idempotente, então o que você tem é o melhor que você pode fazer, talvez com mais alguns guardas ou algo para ser executado apenas uma vez por dia ou outras coisas.
Estou tentando executar o apt-get dist-upgrade através do livro de receitas do chef. Estou ciente de que executar o apt-get upgrade no livro de receitas não é geralmente recomendado ( link ), mas nós controlamos nossos espelhos do ubuntu e qualquer pacote entrará nesse espelhamento somente após testes completos, então rodar dist-upgrade é bom.
O que eu tenho atualmente no meu livro de receitas é
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
que se parece mais com um script de shell, em vez de um livro de receitas do chef. Adicionar o livro de receitas apt irá executar apt-get update
, mas não encontrei uma maneira melhor de fazer as coisas para o apt dist-upgrade.
Até mesmo este link do livro de receitas funciona da mesma maneira.
Como isso pode ser feito de uma maneira melhor através do livro de receitas do chef?
Eu estou procurando respostas através de livros de receitas apenas não pelo cron / unattendedupgrades (Como estou ciente de fazer as coisas via cron / unattendedupgrades).
Atualização:
apt update pode ser melhor executado por
apt_update 'update' do
action :update
end