Actualizaciones automáticas con DNF

En la familia de distros de RedHat (Fedora, RHEL, Almalinux, RockyLinux, etc.) se encuentra el paquete dnf-automatic, automatiza la instalación de parches y (si queremos) su posterior reinicio.

Esto permite desentendernos, hasta cierto punto, de una de las tareas más importantes en un servidor conectado a Internet: mantenerlo actualizado. Algo que parece tan obvio pero que muchos no realizan por desidia, ignorancia o miedo a que se rompa algo al actualizar. "Si funciona no lo toques" se aplica mucho, por desgracia.

El primer paso es instalar el paquete:

$ sudo dnf install dnf-automatic

A continuación editamos el fichero /etc/dnf/automatic.conf, el cual es sencillo y está muy bien explicado

#  What kind of upgrade to perform:
# default                            = all available upgrades
# security                           = only the security upgrades
upgrade_type = default

Si queremos ser cautelosos podemos indicar que solo instale actualizaciones de seguridad, no nuevas versiones. Aunque si usamos una distribución de rango empresarial (Almalinux o similares) las actualizaciones son muy conservadoras, podemos seleccionar default.

download_updates = yes
apply_updates = yes

Bastante autoexplicativo, ¿no?

# When the system should reboot following upgrades:
# never                              = don't reboot after upgrades
# when-changed                       = reboot after any changes
# when-needed                        = reboot when necessary to apply changes
reboot = when-needed

Esta es la parte más peliaguda, dependerá de cada caso. Básicamente indica al sistema que hacer tras instalar las actualizaciones.

En mi caso, al ser servidores de uso personal le indico que reinicie solo en el caso de que un paquete lo solicite (normalmente suele ser nuevas versiones del kernel o librerías importantes como glibc).

El resto de opciones es para configurar que el servicio envíe un correo al ejecutarse o modificar el comando que hace reiniciar el equipo.

Una vez configurado todo a nuestro gusto, activamos el timer que disparará todo el proceso:

$ sudo systemctl enable dnf-automatic.timer

Si revisamos el estado de este timer, podremos ver a que hora se ejecutará. En este caso, podemos ver que se lanza a las 06:25 de la mañana, horario UTC.

$ sudo systemctl status dnf-automatic.timer
● dnf-automatic.timer - dnf-automatic timer
     Loaded: loaded (/usr/lib/systemd/system/dnf-automatic.timer; enabled; preset: disabled)
     Active: active (waiting) since Mon 2024-04-22 08:40:55 UTC; 22h ago
      Until: Mon 2024-04-22 08:40:55 UTC; 22h ago
    Trigger: Wed 2024-04-24 06:25:54 UTC; 23h left
   Triggers: ● dnf-automatic.service

Ya tendríamos lista la automatización. Por precaución es aconsejable revisar (cada cierto tiempo) que todo el proceso se está realizando, podemos mirar el fichero /var/log/dnf.log y comprobar que se está ejecutando procesos a diario.

23/04/2024 - Linux