apt-dater: actualizaciones múltiples …

9 May

… con todo lo que eso conlleva.

Aunque es un programa que ya empleo en mi trabajo, ahora me ha tocado usarlo en mis máquinas, las propias y las ajenas, porque he alcanzado cierto grado de normalización en su administración.

Requisitos

En todos los sistemas es necesario disponer de:

  1. Conexiones SSH.
  2. Mecanismo sudo funcionando.
  3. Cuenta administrativa.

Se designa entonces una máquina desde la que efectuar las conexiones, un punto central, al que nos conectaremos para obtener la consola de control del programa.

En el servidor …

Se debe instalar el paquete apt-dater y proceder a su configuración, siempre desde la cuenta administrativa. El programa no requiere valores globales y usa $HOME/.config/apt-dater como directorio de configuración.

Allí tenemos que definir tres archivos; los dos primeros, apt-dater.conf y hosts.conf están en formato GKeyFile mientras que el tercero depende de la versión del programa screen.

Una vez creada la configuración el programa es muy sencillo de usar: basta con invocarlo para que aparezca el menú.

apt-dater en acción

Configuración

El archivo apt-dater.conf define varios aspectos de su funcionamiento y empleando la copia que se incluyen en su documentación es más que suficiente para empezar a trabajar.

Quizás sea interesante definir el auto refresco de los paquetes en caso de que estén desactualizados porque en algunos casos he visto demasiadas llamadas a apt-get update que sobrecargan red y procesador.

Ah, y también conviene echar un vistazo al juego de colores del interfaz (funciona bajo ncurses) y cómo notificar avisos al operador.

Lista de máquinas

Las máquinas que se controlan desde el panel principal están definidas en el archivo hosts.conf. No es muy cómodo para trabajar porque el formato subyacente está pensado para pares clave-valor y en algunos casos termina siendo farragoso de utilizar.

La idea  es agrupar máquinas bajo etiquetas que pueden tratarse como un todo en el panel de control. No admite más subniveles así que es posible que para algunas redes se quede corto, a pesar de los mecanismos de búsqueda y marcado del panel que también dan juego.

#
#  [Customer Name]
#  Hosts=([OptionalUser@]host.domain[:OptionalPort];)*
#  [IdentityFile=path_to_identity_file]
#

[Propios]
Hosts=esferas.org;quark.taquiones.net:373;\
      spin.taquiones.net

[Amigos]
Hosts=example.net:1048

Pues sí,  es un poco pobre: lo más se puede incluir por grupo es un archivo de identidad con el que conectar, y si la lista de máquinas es larga se tiene que jugar con roturas de línea para evitar errores sintácticos.

Conexiones

Antes de usarlo por primera vez es necesario crear un par de claves SSH (ssh-keygen) y transmitirlas a las cuentas cliente (ssh-copy-id). La gracia del asunto es conectarse sin contraseñas desde el panel de control así que este paso es obligado.

En los clientes …

En las máquinas subordinadas, secundarias o clientes, como se las quiera llamar, las operaciones que hay que realizar son las siguientes:

  1. Instalar el paquete apt-dater-host.
  2. Retocar la configuración de sudo (archivo /etc/sudoers.d/apt-dater-host que incluye el paquete) para que el grupo adm tenga acceso a varios programas sin precisar de contraseña.
  3. Añadir la cuenta administrativa (osr en mi caso) al grupo adm.

Los programas que necesita apt-dater para efectuar las actualizaciones son:

# Keep apt-dater's MAINTAINER environment variable
Defaults        env_keep += MAINTAINER

# Allow members of group adm to execute the apt-get command
%adm            ALL=NOPASSWD: /usr/bin/apt-get,/usr/sbin/needrestart
Comentarios sobre el uso

apt-dater no es tan completo como debiera. Su foro está lleno de peticiones de mejoras que lo prueba y es verdad que tiene ciertas carencias, como un mejor uso de los paquetes retenidos, pero dispone de conexión directa con cada máquina, registro de sesiones para ver los fallos y puede recabar bastante información sobre los sistemas.

De ahí, por cierto, viene la recomendación de emplear un paquete aparte para gestionar los nodos: hace más cosas que comunicarse con apt. Por ejemplo, se puede ver lo siguiente de una máquina:

apt-dater: información de un host

Ah, y si se utiliza etckeeper para mantener el directorio /etc bajo control de git y, como en caso, prefiero que los cambios en éste estén registrados antes de cualquier instalación o actualizacióin, lo mejor es añadir el programa a la lista de ejecutables sin contraseña para el operador.

Esto es, si en /etc/etckeeper/etckeeper.conf está lo siguiente:

# Uncomment to avoid etckeeper committing existing changes to 
# /etc before installation. It will cancel the installation,
# so you can commit the changes by hand.
AVOID_COMMIT_BEFORE_INSTALL=1

es muy aconsejable que en /etc/sudoers.d/apt-dater-host se añada ésto otro:

# Allow members of group adm to execute the apt-get command
%adm            ALL=NOPASSWD: /usr/bin/apt-get,/usr/sbin/needrestart,\
                                /usr/bin/etckeeper