Programar actualizaciones en Linux con yum-cron y dnf-automatic

Si eres un usuario habitual de sistemas con Red Hat Enterprise Linux o similares, como Centos o Fedora, te habrás dado cuenta, que, al pasar unas semanas sin acceder a una máquina, cuando quieres instalar o actualizar el sistema, éste te recomienda instalar la herramienta yum-cron o bien dnf-automatic, depende lo moderna que esta sea.

Tal y como sugiere el nombre, yum-cron, se encarga de la programación de tareas de YUM en el sistema. Es bastante fácil de usar. Ya que simplemente modificando su fichero de configuración nos permite adaptarlo a nuestro gusto. Con dnf-automatic, más de lo mismo.

Instalación de yum-cron

Su instalación no tiene nada de especial, ya que es un paquete que se encuentra en los repositorios principales,  en versiones como RHEL 6 o RHEL7, de nuestra distribución favorita:

sudo dnf -y install yum-cron

Este comando es realmente un script escrito en Python, que podemos examinar cuando queramos. Se ubica, una vez instalado, en la carpeta /sbin

En el caso de utilizar RHEL 8 o la última versión de Rocky Linux, debemos utilizar la herramienta dnf-automatic

sudo dnf install dnf-automatic

Tal y como se muestra en la imagen:

Instalando dnf-automatic en Rocky Linux

Configuración y primeros pasos

Una vez instalado el fichero de configuración se encuentra en la ruta /etc/yum/yum-cron.conf. En este archivo se indica la ejecución diaria de las tareas de cron, aunque también se puede indicar que las ejecute de inmediato.

Si queremos que se apliquen las actualizaciones:

apply_updates = yes

O si queremos que se apliquen de inmediato:

random_sleep = 0

En el caso de dnf-automatic el fichero de configuración se encuentra en /etc/dnf/automatic.conf

Podemos ver el historial de cambio consultando el fichero /var/log/yum.log

Si queremos saber un poco más

Aunque parece lo contrario las tareas de yum-cron no afectan al crontab del usuario root. Si queremos ver su programación debemos consultar la carpeta /etc/cron.daily y el fichero 0yum-daily.cron También podemos configurar /etc/yum/yum-cron-hourly.conf, para que se ejecute cada hora.

Si solo deseamos instalar las actualizaciones de seguridad, cosa que recomiendo, en el fichero de configuración que hemos indicado antes, descomentamos el campo:

# minimal-security                   = yum --security update-minimal

Siempre podemos consultar su página de man para obtener más información.

Si gestionamos un amplio parque de servidores, creo que es buena idea añadir este servicio y su fichero de configuración en una clase de puppet; para que así tengamos nuestros entornos siempre actualizados. Al igual que se podría hacer algo similar con Ansible. Aunque en los sistemas muy críticos siempre recomiendo hacerlo de forma manual, ya que las actualizaciones de seguridad incluyen reinicio, sobre todo si afectan al núcleo o kernel.

Para saber más:

Página de man de yum-cron

Redhat.com – Scheduling updates in Linux using yum-cron

Fedoraproject.org – AutoUpdates