Eu mantenho um bando de servidores EC2 com ansible. Os servidores são atualizados e atualizados regularmente usando o módulo apt .
Quando tentei atualizar manualmente um servidor, recebi a seguinte mensagem:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
linux-headers-3.13.0-29 linux-headers-3.13.0-29-generic
linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
linux-image-3.13.0-29-generic linux-image-3.13.0-32-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Existe uma maneira de correr sudo apt-get autoremove
com ansible?
command
módulo para executar um comando shell bruto.Respostas:
O suporte para a
apt-get
opção--auto-remove
agora está incorporado noapt
(opcionalautoremove
) da Ansible a partir da versão 2.1. A documentação oficial está disponível em http://docs.ansible.com/ansible/apt_module.htmlA fusão aconteceu aqui .
Observe que
autoclean
também está disponível a partir do 2.4fonte
Este método simplificado requer apenas uma tarefa
fonte
Você pode fazer isso com
command
(não testado):No entanto, acho que pode ser arriscado executar
autoremove
automaticamente. Devido a erros de administração do sistema que você cometeu no passado (esses podem estar no seu código ansível), é possível que um pacote necessário possa em algum momento ser falsamente detectado como autoremovível, e isso pode impedir o funcionamento do servidor. Por outro lado, não é grande coisa deixar pacotes não utilizados no sistema, e isso não é muito comum, a menos que você faça uma grande alteração na configuração do servidor.Portanto, eu ficaria longe dos pacotes de remoção automática sem confirmação de um ser humano.
fonte
apt-mark manual <pkg>
Essa é uma variação da solução que Antonis Christofides forneceu. É testado e funciona para mim. Evitei usar ignore_errors no comando check. Caso contrário, geralmente usa a mesma abordagem.
fonte
--dry-run
primeira vez?apt-get -y autoremove
não retorna um status diferente de zero. Portanto, parece que você poderia executar incondicionalmente sem a--dry-run
verificação echanged_when
contra a chamada de remoção automática real, eu acho.Uma variação que destaca a alteração nos pacotes (a primeira tarefa será adequadamente colorida em verde ou amarelo):
fonte
apt-get --dry-run autoremove | grep "to remove"
retornos no Ubuntu 14.04,0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
mas no Ubuntu 15.04 ele retorna com o0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
qual o seu sed não corresponde.install
porinstall(ed)?
ou algo parecido.Eu gosto desse método simplificado e adiciono algumas mensagens de verificação e impressão para mim.
Obrigado pela cortopia e Dave James Miller .
fonte