Automatizar actualizaciones con yum-updatesd y yum-cron en CentOS


Actualizaciones automáticas

CentOS es una distribución de las consideradas como más estables. Aunque sea bastante estable, no implica que no necesite de actualizaciones con regularidad debido a incidencias críticas en algún paquete de software o bien debido avulnerabilidades.

Para evitar consumir tiempo a los administradores de sistemas comprobando regularmente si se necesita alguna actualización, existen herramientas que se encargan de realizar esta tarea de forma períodica.

Existen dos alternativas en CentOS:

  • yum-updatesd es un demonio notificador de actualizaciones que puedan ser aplicadas al sistema
  • yum-cron es un paquete con los archivos necesarios para hacer que el comando yum update se establezca como un trabajo de cron.

Generalmente yum-updatesd es más recomendable para escritorios y yum-cron para servidores, por este motivo coexisten ambos.

yum-cron es algo más sencillo pero no dispone de muchas opciones de configuración, aunque yum-updatesd es más configurable, pero parece tener algunas fugas y acumulaciones de memoria/CPU cuando se ejecuta durante bastante tiempo en servidores.

Configurando yum-updatesd

Podemos instalarlo con:

# yum install yum-updatesd

yum-updatesd dispone de varios métodos de notificación:

  • syslog
  • email
  • dbus

Estas notificaciones se configuran mediante el archivo de configuración /etc/yum/yum-updatesd.conf. Este archivo dispone de una única sección “main” que define todas las opciones de configuración globales. Las opciones disponibles son las siguientes:

  • run_interval Número de segundos a esperar entre comprobaciones de actualizaciones disponibles.
  • updaterefresh Número mínimo de segundos entre para actualizar la información de actualizaciones para evitar acceder al servidor con demasiada frecuencia.
  • emit_via Lista de maneras para emitir una notificación de actualización. Los valores válidos son: ’email’, ‘dbus’ y ‘syslog’.
  • do_update Opción booleana para decidir si las actualizaciones deberían ser o no aplicadas. Por defecto falso.
  • do_download Opción booleana para decidir si las actualizaciones deberían o no ser descargadas automáticamente. Por defecto falso.
  • do_download_deps Opción booleana para automáticamente descargar las dependencias de paquetes que necesitan actualizarse también. Por defecto falso.

Opciones de notificacion por email

  • email_to Lista de direcciones email para enviar las actualizaciones de notificación. Por defecto ‘root@locahost’.
  • email_from Direcciones de email desde donde enviar las notificaciones de actualización. Por defecto ‘yum-updatesd@localhost’.
  • smtp_server Servidor SMTP para usar en el envío de email, cadena de host o host:puerto. Por defecto ‘localhost:25’.

Opciones de notificacion por Syslog

  • syslog_facility La instalación de syslog que debería ser usada. Por defecto ‘DAEMON’.be used. Defaults to ‘DAEMON’.
  • syslog_level Nivel de los mensajes en syslog. Por defecto ‘WARN’.

Ejemplo de configuración

Un ejemplo de configuración posible para /etc/yum/yum-updatesd.conf donde cada 8 horas comprobamos actualizaciones sin instalarlas, pero descargandolas y notificamos si existe alguna por email puede ser:

[main]
# how often to check for new updates (in seconds)
run_interval = 28800

# how often to allow checking on request (in seconds)
updaterefresh = 3600
# how to send notifications (valid: dbus, email, syslog)
emit_via = email
# should we listen via dbus to give out update information/check for
# new updates
dbus_listener = yes
# who to send the email notifications to
email_to = [email protected]
# who send the notifications
email_from = [email protected]
# automatically install updates
do_update = no
# automatically download updates
do_download = yes
# automatically download deps of updates
do_download_deps = yes

Después de configurar el servicio, lo iniciaremos con:

# service yum-updatesd start

Y para que se inicie en cada inicio del servidor:

# chkconfig yum-updatesd on

Para desactivar es realizar la operación inversa a yum-updatesd:

#service yum-updatesd stop
#chkconfig --del yum-updatesd

Nota: Recuerda que una vez desactivado no se notificará ningún tipo de actualización, y debe por tanto realizarse de forma manual.

Configurando yum-cron

yum-cron se habilita como si fuera cualquier otro daemon:
# yum install yum-cron
# yum chkconfig yum-cron on
# service yum-cron start

Esto creara un archivo /etc/cron.daily/0yum.cron que será ejecutado diariamente a la hora programada.

Aunque se trata como daemon, en realidad no lo es, sino que es un script que se ejecuta diariamente y limpia las actualizaciones semanalmente. Es fácil comprobar con chkconfig –list que yum-cron esta en la lista, pero desahabilitado para todos los niveles de ejecución. Puede activarse si se desea con:

# chkconfig yum-cron on
Este paso no es necesario ya que cron ejecutara igualmente la tarea programada.
Si es necesario iniciar por primera vez yum-cron para que se cree el archivo en cron-daily con un flag en /var/lock/subsys/yum-cron:
# /etc/init.d/yum.cron start

Nota: Es importante recalcar que algunos paquetes como los del kernel requieren de reinicio para aplicar las nuevas actualizaciones y yum-updatesd y yum-cron no implican reiniciar el sistema, por lo que recae esta ultima atencion al administrador del sistema.


Deja un comentario