Archivo

Entradas Etiquetadas ‘up2date’

CheckUpdatesRedHat4

Viernes, 21 de enero de 2011

Chequeo automático de actualizaciones pendientes en Red Hat 4

Al tener que administrar varios servidores linux Red Hat, me pareció interesante disponer de un sistema que me avisará mediante correo electrónico de las actualizaciones pendientes de instalar en los diferentes servidores para que no haya ninguno que se quede demasiado desactualizado.

En Red Hat 5 esto se puede hacer mediante el servicio yum-updatesd que viene incluido, pero para Red Hat 4 no he encontrada algo parecido. Por eso me he creado un script personalizado para hacer este trabajo. Este script además de avisar por e-mail, también descarga los paquetes para que la próxima vez que se haga la actualización esta sea más rápida. El script en cuestión es el siguiente:

#!/bin/bash

AVISADOS="root@midominio.es"
HOSTNAME=`hostname`
TMPDIR=/tmp
# Esperamos un tiempo aleatorio para que todos los servidores
# no ataquen a la RHN a la vez
sleep `expr $RANDOM % 300`
TMPFILE=`mktemp -p $TMPDIR checkup2date.XXXXXX`
TMPFILE2=`mktemp -p $TMPDIR checkup2date.XXXXXX`
# Obtenemos la lista de paquetes pendientes
/usr/bin/up2date -l > $TMPFILE
# Descargamos los paquetes para facilitar la instalacion posterior
/usr/bin/up2date -u -d -f  > /dev/null 2>&1
# Procesamos la lista de pendientes
ESTADO=0
CONT=0
while read linea
do
   if [[ `echo $linea | grep "^Name"` ]]
   then
      ESTADO=1
   elif [[ `echo $linea | grep "^--*$"` ]]
   then
      continue
   elif [[ $ESTADO -eq 1 && -z $linea ]]
   then
      ESTADO=0
   elif [[ $ESTADO -ne 0 ]]
   then
      echo $linea | awk -F" " '{printf "     %-50s %s-%s\n",$1,$2,$3}' >> $TMPFILE2
      CONT=`expr $CONT + 1`
   fi
done < $TMPFILE
# Generamos el mensaje de correo segun el num. de paquetes pendientes
case "$CONT" in
 0)
   SUBJECT="$HOSTNAME: no updates available"
   echo "Hi," > $TMPFILE
   echo "This is the automatic update system on $HOSTNAME" >> $TMPFILE
   echo >> $TMPFILE
   echo "There is no package updates available." >> $TMPFILE
   echo >> $TMPFILE
   echo "Thank You," >> $TMPFILE
   echo "Your Computer" >> $TMPFILE
   ;;
 1)
   SUBJECT="$HOSTNAME: 1 update available"
   echo "Hi," > $TMPFILE
   echo "This is the automatic update system on $HOSTNAME" >> $TMPFILE
   echo >> $TMPFILE
   echo "There is 1 package update available. Please run the system updater." >> $TMPFILE
   echo  >> $TMPFILE
   echo "Package available for update: " >> $TMPFILE
   echo  >> $TMPFILE
   cat $TMPFILE2 >> $TMPFILE
   echo >> $TMPFILE
   echo "Thank You," >> $TMPFILE
   echo "Your Computer" >> $TMPFILE
   ;;
 *)
   SUBJECT="$HOSTNAME: $CONT updates available"
   echo "Hi," > $TMPFILE
   echo "This is the automatic update system on $HOSTNAME" >> $TMPFILE
   echo >> $TMPFILE
   echo "There are $CONT package updates available. Please run the system updater." >> $TMPFILE
   echo  >> $TMPFILE
   echo "Packages available for update: " >> $TMPFILE
   echo  >> $TMPFILE
   cat $TMPFILE2 >> $TMPFILE
   echo >> $TMPFILE
   echo "Thank You," >> $TMPFILE
   echo "Your Computer" >> $TMPFILE
   ;;
esac
# Enviamos el correo
cat $TMPFILE |mail -s "$SUBJECT" $AVISADOS
# Borrado temporales
rm -f $TMPFILE $TMPFILE2

Linux ,

CreacionRepositorioYUM

Miércoles, 10 de noviembre de 2010

Creación de un repositorio YUM para Red Hat 4 y 5

En este documento pretendo explicar una forma rápida y sencilla de crearnos nuestro propio repositorio de paquetes RPM. El acceso al repositorio será vía web.

Crearemos un repositorio distinto por cada versión de SO (4 y/o 5) y arquitectura (32 bits y/o 64 bits). Los repositorios para Red Hat 4 serán accesibles mediante la herramienta up2date y los de Red Hat 5 mediante yum.

Para crear los repositorios necesitamos instalarnos las herramientas:

  • createrepo: es la encargada de generar los repositorios para YUM
  • repoview: genera unas páginas HTML indice con el contenido del repositorio. Estas páginas se generan dentro de una carpeta repoview y nos permite navegar por los paquetes del repositorio y obtener información sobre ellos.
  • yum-arch: esta herramienta la necesitamos para Red Hat 4 para generar unos ficheros .hdr que usa up2date.

Dado que el repositorio va a ser accesible vía web, también necesitamos un servidor web, en este caso yo voy a utilizar el servidor Apache.

Los repositorios se van a crear en un servidor con Red Hat 5 con el repositorio EPEL configurado (en este repositorio están disponibles las herramientas mencionadas con anterioridad).

La instalación de estas herramientas la hacemos con el siguiente comando:

yum install createrepo repoview yum-arch

A continuación nos creamos los directorios que albergarán el repositorio. Estos directorios deberán ser accesibles vía web.  Crearemos un directorio por cada repositorio.

Una vez creados los directorios hemos de copiar dentro de ellos los diferentes paquetes RPM que queremos dejar disponibles en el repositorio.

Nota:  Si tenemos activado SELinux, hemos de revisar el contexto de los ficheros *.rpm copiados, ya que por defecto se les asigna uno que los deja inaccesibles para el Apache.

Una vez copiados los RPMs que nos interesen y cada vez que se haga una modificación ejecutaremos los siguientes comandos para generar/actualizar el repositorio:

createrepo -d $dir
repoview $dir

siendo $dir el directorio del repositorio.

Además, en el caso de actualizar los repositorios de Red Hat 4 también ejecutaremos:

yum-arch $directorio

Al ejecutar esta herramienta obtenemos un aviso de que esta deprecated, pero es la forma que he encontrado para crear el repositorio en Red Hat 4.

Configuración del repositorio en los clientes

El activar el repositorio en los clientes depende de si vamos a usar Red Hat 4 (up2date) o Red Hat 5 (yum).

Red Hat 4 (up2date)

Nos hemos de crear un fichero /etc/yum.repos.d/myRepo.repo con el siguiente aspecto:

[myRepo]
name=myRepo Repository for Enterprise Linux 4 - $basearch
baseurl=http://$urlrepositorio
enabled=1
gpgcheck=0

Además hemos de dar de alta el repositorio en la configuración de los sources de up2date (/etc/sysconfig/rhn/sources) añadiendo las siguientes líneas al fichero mencionado con anterioridad:

#BEGIN myRepo
yum myRepo http://$urlrepositorio
#END myRepo

Con esto ya está dado de alta el repositorio en nuestro cliente.

Nuestro repositorio no tiene activado el uso de GPG. En caso de querer utilizar paquetes firmados con GPG hay que hacer más cosas, pero eso se escapa de los objetivos de esta documentación. Para poder utilizar este repositorio no firmado  es necesario pasar el parámetro –nosig al up2date para que no compruebe la firma GPG. Se podriá desactivar esta comprobación de forma global para todos los repositorios RPM, pero esto puede ser demasiado radical.

Red Hat 5 (Yum)

Nos hemos de crear un fichero /etc/yum.repos.d/myRepo.repo con el siguiente aspecto:

[myRepo]
name=myRepo Repository for Enterprise Linux 5 - $basearch
baseurl=http://$urlrepositorio
enabled=1
gpgcheck=0

A semejanza del repositorio EPEL (y supongo que otros) se podría crear un paquete RPM que se encargara de configurar el nuevo repositorio en nuestros clientes.

Linux , , , ,