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 autoremovecon ansible?

commandmódulo para hacer un comando de shell sin formato.Respuestas:
El soporte para la
apt-getopción--auto-removeahora 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
autocleantambié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
autoremoveautomá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-runprimero?apt-get -y autoremoveno devuelve un estado distinto de cero. Por lo tanto, parece que podría ejecutar incondicionalmente sin el--dry-runy comprobarchanged_whenla 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.installconinstall(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