Mantengo una bandada de servidores EC2 con ansible. Los servidores se actualizan regularmente y se actualizan utilizando el módulo apt .
Cuando intenté actualizar un servidor manualmente, recibí el siguiente mensaje:
$ 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.
¿Hay alguna manera de correr sudo apt-get autoremove
con ansible?
command
módulo para hacer un comando de shell sin formato.Respuestas:
El soporte para la
apt-get
opción--auto-remove
ahora está integrado en Ansibleapt
(opciónautoremove
) a partir de la versión 2.1 La documentación oficial se encuentra en http://docs.ansible.com/ansible/apt_module.htmlLa fusión sucedió aquí .
Tenga en cuenta que
autoclean
también está disponible a partir de 2.4fuente
Este método simplificado requiere solo una tarea
fuente
Puedes hacerlo con
command
(sin probar):Sin embargo, creo que podría ser arriesgado correr
autoremove
automáticamente. Debido a los errores de administración del sistema que cometió en el pasado (estos podrían estar en su código ansible), es posible que un paquete que se necesita en algún momento se detecte falsamente como auto-removible, y esto podría detener el funcionamiento del servidor. Por otro lado, no es gran cosa dejar paquetes no utilizados en el sistema, y no es muy común a menos que realice un cambio importante en la configuración del servidor.Por lo tanto, me mantendría alejado de los paquetes de eliminación automática sin la confirmación de un humano.
fuente
apt-mark manual <pkg>
Esta es una variación de la solución que Antonis Christofides proporcionó. Está probado y funciona para mí. Evité usar ignore_errors en el comando de verificación. De lo contrario, generalmente toma el mismo enfoque.
fuente
--dry-run
primero?apt-get -y autoremove
no devuelve un estado distinto de cero. Por lo tanto, parece que podría ejecutar incondicionalmente sin el--dry-run
y comprobarchanged_when
la llamada de autoremove real, creo.Una variación que resalta el cambio en los paquetes (la primera tarea será de color verde o amarillo):
fuente
apt-get --dry-run autoremove | grep "to remove"
devoluciones en Ubuntu 14.04,0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
pero en Ubuntu 15.04 devuelve lo0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
que su sed no coincide.install
coninstall(ed)?
o algo así.Me gusta este método simplificado , y agrego un mensaje de verificación e impresión para mí.
Gracias por la cortopy y Dave James Miller .
fuente