Bash

  • Los sysadmins GNU/Linux amamos todas las herramientas que automaticen tareas y simplifiquen la administración de los servidores. Este artículo presenta un script que he desarrollado para verificar a diario las actualizaciones de paquetes disponibles en los repositorios y enviar un mail con el resumen.

  • En este artículo comparto un pequeño script Bash para resolver de forma reversa (reverse lookup) todas las direcciones IPv4 de una clase C pasada como parámetro. Es decir, mapear las direcciones IPv4 a sus nombres de host (hostnames) correspondientes, consultando a los servidores de nombre (DNS) configurados en el sistema.

  • El artículo Cómo crear tu propia autoridad certificante (CA) explica cómo crear tu propia autoridad certificante para generar y firmar certificados para utilizar con SSL. Aquí presento un script para verificar periodicamente la validez de los certificados x509. La función del script es notificar por correo electrónico cuando un certificado está próximo a expirar, para poder renovarlo con tiempo y no sufrir problemas o interrupciones de los servicios que utilizan SSL (evitar dolores de cabeza).

  • En este artículo presento un script Bash para verificar el estado de un enlace. Lo he desarrollado para detectar microcortes de red en uno de mis servidores y recolectar evidencia para efectuar un eventual reclamo con el proveedor del servicio.

  • Un problema que tenemos muchos administradores de sistemas GNU/Linux es cómo ejecutar tareas de mantenimiento de forma eficiente sobre muchos servidores al mismo tiempo. Desde el momento en que nuestra organización pasa a tener varias decenas de servidores, ejecutar operaciones de mantenimiento simples, como por ejemplo actualizar el sistema, pasan a ser tareas tediosas que consumen tiempo y recursos humanos.

    Claro que muchas de las tareas de mantenimiento de un sistema operativo se pueden automatizar utilizando scripts y tareas programadas. Sin embargo algunas requieren intervención humana: un claro ejemplo es actualizar el sistema. No se puede actualizar el sistema a ciegas y esperar que todo funcione. Muchas actualizaciones requieren reinicio de servicios o nuevas versiones de archivos de configuración. Sin contar con los conflictos producidos por aplicaciones a medida atadas a versiones específicas de paquetes. Por ello el administrador de sistemas debe examinar lo que cada gestor de paquetes ofrece actualizar, para evaluar si se debe proceder o se requiere alguna clase de intervención manual. Además el administrador de sistemas tiene en cuenta si una actualización requiere reiniciar servicios (lo que tal vez requiera posponer la actualización de un servidor para no afectar la operatoria de la organización) y durante la actualización debe actuar ante incompatibilidades producto de nuevas versiones de archivos de configuración.

    Pero, a pesar de estas limitaciones, es posible automatizar el proceso de autenticación en cada sistema remoto. Utilizando un usuario con autenticación SSH con clave pública y capacidad de actualización del sistema, se evita que el administrador deba abrir decenas de sesiones SSH remotas para lanzar las actualizaciones. De esta forma se agiliza el proceso, sin perder control sobre el mismo (como veremos).

    En este artículo voy a explicar detalladamente cómo, utilizando un servidor de administración centralizado, elaborar una arquitectura de autenticación que permita lanzar actualizaciones de múltiples servidores remotos desde un simple script Bash.

  • Finalmente he liberado la última versión de mi sistema de actualización de servidores en paralelo, y al mismo tiempo lo he bautizado como "updatemyfarm" (actualiza mi granja, en español). Elegí el término "granja" porque creo representa mejor el sentido de heterogeneidad. Este script apunta a aquellos entornos con diferentes distribuciones y versiones, donde otras soluciones pueden tener problemas de compatibilidad a causa de las plataformas que utilizan. Por otro lado no está orientado a clusters, aunque podría utilizarse perfectamente para este fin.

    Esta última versión cuenta con varias correcciones de bugs y muchas mejoras, ya que ahora el proceso se realiza completamente en paralelo: primero se actualizan los repositorios de los sistemas basados en Debian; luego se ofrece al usuario el listado de servidores con actualizaciones disponibles; y finalmente se lanzan todas las actualizaciones al mismo tiempo.

    Pueden descargar una copia del mismo desde su repositorio en GitHub: linuxitux/updatemyfarm