Una de las prioridades que tenemos cuando administramos un servidor es actualizar el software. Al tener todos los paquetes actualizados lo que conseguimos es solucionar bugs, ya sean funcionales o de seguridad.
Si utilizamos un entorno gráfico seguramente nos venga con algún sistema semiautomatizado que nos recuerde que hay actualizaciones pendientes pero en servidores seremos nosotros los que tenemos que hacerlo de forma manual.
Como es habitual en Linux tendremos bastantes herramientas para realizar esta tarea. Una muy interesante será utilizar una herramienta de automatización como Ansible. Esto nos permitirá entre otras muchas cosas programar una tarea que actualice las máquinas sin intervención. El problema es que requiere instalar toda la infraestructura de Ansible y puede resultar algo complejo si lo único que queremos es actualizar unos pocos servidores.
Existe otra opción más sencilla que es la que veremos en esta guía y es a través de la utilidad unattended-upgrades.
Esta guía está más indicada para instalaciones que utilicen los repositorios estables de Debian o Ubuntu. En principio todas las actualizaciones que nos llegan a través de estos repositorios están muy probadas y no es necesario hacer un escrutinio previo.
Si estamos utilizando repositorios de terceros (docker, PHP,...) debemos tener más cuidado con esta estrategia porque podríamos encontrarnos con algún conflicto. En cualquier caso tenemos la opción de decidir qué repositorios entran dentro de estas actualizaciones y cuáles no.
Instalaremos el paquete desde el terminal con:
apt install unattended-upgrades
Automáticamente se configurará y activará el servicio.
La configuración por defecto de la aplicación establece que se actualizan los paquetes de los repositorios estándar de Debian una vez al día. En la mayoría de los casos esto será suficiente pero lógicamente el programa nos permite configurarlo para casos más complejos.
Para hacer esta configuración avanzada tendremos que editar el fichero:
vim /etc/apt/apt.conf.d/50unattended-upgrades
En el caso de Debian tenemos la siguiente configuración que es la que habilita la actualización de los repositorios por defecto.
Tenemos también la posibilidad de configurar un bloque de repositorios o paquetes problemáticos en una lista negra para que no se actualicen.
La mayor parte del ficheros son opciones que están comentadas y será fácil ver cómo funcionan.
Podemos probar la configuración y ver cualquier problema con:
unattended-upgrades --dry-run --debug
La configuración de la frecuencia de las actualizaciones la podremos establecer en el fichero /etc/apt/apt.conf.d/20auto-upgrades. Y para cualquier cambio relanzamos el servicio con:
systemctl restart unattended-upgrades.service
En conclusión, la utilidad unattended-upgrades nos permite tener actualizado de forma muy sencilla un sistema basado en apt. Pero como todo proceso automático hay que tener en cuenta que perdemos precisión y visibilidad sobre lo que se está haciendo.
También tendremos que tener muy presente que si se actualizan paquetes relacionados con el servicio que esté prestando la máquina (servidores web, bases de datos, etc.) durante el proceso habrá una interrupción que puede ser más o menos importante según el entorno. Todo esto tendremos que valorarlo con cuidado para cada caso particular.
Otro punto importante a tener en cuenta en Ubuntu es que este sistema únicamente actualiza la paquetería que viene de los repositorios, no las aplicaciones instaladas a través de snap que cada vez son más numerosas. Para esto tendremos que configurar snap para que actualice automáticamente o, mejor aún, dejar de utilizar Ubuntu y sus snaps.
Comentarios