Administración de Configuración de Servidores (ACS), en profundidad

Debemos primero presentaros, de manera básica, qué es la Administración de Configuración de Servidores (ACS). Ya antes hemos contado la historia de Manolo, versión 1.0, un administrador muy voluntarioso pero mal aprovechado por la empresa. Por supuesto que nuestro Manolo conoce las herramientas básicas que todo Administrador de Sistemas debería tener en su repertorio, tanto para ambiente GNU/Linux como para Microsoft Windows®; las herramientas para las redes también se las conoce al dedillo. Sin embargo, cada vez que tiene que implementar -o reparar- un servidor, tiene que repetir todo el procedimiento de manera manual.

Ya hicimos un ligero esbozo sobre cómo administrar y monitorizar una base de datos Active Directory (servicio de directorio distribuido de Windows®) en una comparativa de Pandora FMS y PRTG, y que por medio de dicha herramienta podríamos desplegar (instalar, actualizar, reparar) aplicaciones en los ordenadores de nuestras redes bajo supervisión, incluso ayudados con la tecnología de Powershell y WMI.

En ese mismo orden de ideas se presenta la Administración de Configuración de Servidores (que denominaremos simplemente ACS de aquí en adelante), la cual es una excelente herramienta que más bien parece una navaja suiza, debido a los múltiples campos de aplicación. Uno de esos campos es la monitorización, tarea para la cual Pandora FMS ofrece amplia experiencia y flexibilidad en su manejo y cuyo enfoque introduciremos aquí en algunos aspectos de la ACS.

ACS

Introducción a la ACS

Llamado de mil y una maneras distintas, el trabajo de administrar diez, cien o mil servidores (web, de base de datos, DNS, etcétera) es y será una tarea ardua y repetitiva. Todo buen Administrador de Sistemas (“perezoso”) que tenga que realizar una tarea cualquiera debe ser tan previsor como para guardarla y utilizarla en otra oportunidad distinta, ya sea que se le presente mañana, el próximo mes o el próximo año. Es aquí donde la automatización juega una figura clave en la ACS.

La ACS es el mecanismo utilizado para que un servidor alcance las condiciones necesarias para albergar un servicio (trabajo o labor) que necesitemos, por medio del uso de guiones predefinidos en un lenguaje específico y sus características.

Esto es el núcleo, la razón de ser de la ACS, por lo que a veces es nombrado como Herramientas de Administración de Configuraciones o simplemente Herramientas de Automatización de las Tecnologías de la Información, así como también Orquestado de Servidores (¿veis por qué la abreviamos como ACS?).

Beneficios de la ACS

  • Control de versiones de los guiones: un equipo de Administradores de Sistemas puede trabajar con Git proponiendo, creando y modificando los guiones que ponen a punto un servidor, y se puede llevar con detalle los cambios aplicados y someterse a auditoría y establecer responsabilidades, de ser necesario. Estamos hablando de Administradores de Sistemas que hacen su trabajo como programadores, de la misma manera (algo abstracto y estructurado), con la ventaja que se puede replicar y/o compartir en muchos ambientes distintos.
  • Rápida provisión de nuevos servidores: máquinas físicas o virtuales con el sistema operativo deseado pueden ser puestas a punto en poco tiempo.
  • Recuperación rápida de desastres: el punto anterior permite que un servidor caído podamos reemplazarlo mientras realizamos el trabajo forense buscando la causa por la que falló y para que no vuelva a ocurrir.
  • Clonado de servidores únicos en su clase: para los países donde existen las cuatro estaciones, bien sabido es que no hay dos copos de nieve que sean idénticos. Por eso se denomina servidores copo de nieve (“snowflake servers“) a los servidores con una combinación de software y parámetros únicos. Debido a que las ACS llevan cuenta detallada de todos los pasos y operaciones a que tienen que ser sometidos, fácilmente se puede repetir el montaje de un servidor, por muy única que sea su configuración y aglomeración de software.
  • Implementaciones Azul-Verde: si leyeron nuestro artículo sobre las implementaciones de nuevo software sobre máquinas idénticas a las que están en producción, comprenderán que con las ACS no interfieren de manera alguna con el sistema real en funcionamiento; sólo aplicaremos dichos guiones de nuevo a las nuevas máquinas de prueba y tendremos un entorno idéntico al de producción.

ACS

Modelos de funcionamiento de las ACS

Como bien dijimos, podemos agrupar estas aplicaciones en este artículo por su fin último, sus objetivos finales, pero la manera como lo realizan y trabajan es donde está la diferencia. Por ello, podemos especificar los puntos que consideramos clave y comunes a todos ellos:

  • Comunidades que contribuyen a ella: ¿Recuerdan que hablamos de Administradores de Sistemas trabajando de la misma manera que programadores? Ésta es una característica común en las ACS, la multitud de ficheros disponibles para adaptarlos a nuestras propias necesidades para luego volverlos a compartir al mundo. ¡Con esto nos ahorramos -y hacemos que nuestros colegas ahorren (al retribuir con nuestras modificaciones)- cantidad de tiempo y trabajo!
  • Plantillas estructuradas: cada ACS comparte en común el uso de plantillas reutilizables y que permiten valores dinámicos, lo que nos lleva de nuevo a la “programación” de guiones. Podremos, por ejemplo, “numerar” los nombres de los servidores a fin de asignarles un nombre único en la red. Esta operación aunque aparentemente sencilla involucra un sistema de retroalimentación para analizar si fue exitosa la instalación, para proceder a asignar un número, guardar ese valor y comenzar de nuevo el ciclo. Aquí vamos esbozando la idea acerca de la monitorización ACS en sí misma, necesitamos saber cómo desempeña su trabajo cada ACS (los detalles específicos dependen pues de cada ACS en particular).
  • Lenguajes de las plantillas estructuradas: todos los ACS que ofrecen plantillas estructuradas se rigen por normas específicas, ya sean propias o normalizadas en otros lenguajes. Una de las tareas que debemos aprender es la escritura de tales formatos, para luego llevar un control de versiones (ver beneficios de la ACS).
  • Variables globales de la red de área local: el asignarles nombres a los servidores de manera automatizada -numerado progresivo en este caso- nos lleva al control de otras variables, tal como, por ejemplo, las direcciones IP privadas que llevarán los servidores. Pandora FMS tiene una gestión de direcciones IP (conocido como IPAM) e incluso hablamos en alguna oportunidad sobre PHPIpam, un poderoso software que planifica y administra de manera automatizada toda la labor. Por ello, una ACS debe ser capaz de consultar tales hechos del sistema e incluirlos en las plantillas estructuradas que vimos anteriormente. Otros hechos del sistema pueden ser los sistemas operativos empleados, las interfaces de red (cableado, WIFI, sus velocidades de conexión), etc.
  • Integración con la monitorización: otro hecho del sistema es que toda ACS debe ser capaz de alertar al sistema de monitorización de grandes cambios por realizar para así “desactivarlo” y evitar los falsos positivos en los tableros de alertas. Una vez finalizado su trabajo, volver a “activar” al software, en nuestro caso Pandora FMS. Esto implica seguridad en las comunicaciones y compatibilidad en los protocolos.
  • Comportamiento “idempotente”: este término lo tomamos prestado de las matemáticas -que tanto nos apasionan en el campo de la ingeniería- y que en las ACS la mayor parte de las veces es un comportamiento deseable. La idea es que nuestros guiones produzcan siempre el mismo resultado (estado) en nuestros servidores. Pero como todos nosotros y nosotras sabemos, un programa que ya está instalado y funcionando no se necesita volver a instalar. Para ello las plantillas estructuradas deben ser capaces de determinar si es necesaria la instalación, o incluso la reinstalación: muchas veces necesitamos determinada versión exacta (ejecutables, librerías) para que nuestras herramientas funcionen. Un empleado voluntarioso y con buenas intenciones podrá actualizar un servidor y dejarlo inoperativo para nuestros propósitos y aquí le podemos ordenar a nuestra ACS que, de manera periódica, visite nuestros servidores y verifique que todo esté igual. De nuevo insistimos en el tema de la monitorización: con Pandora FMS podemos -y debemos- estar al tanto de que ha sido restaurada a la versión anterior y crear una gestión de incidencias con Integria IMS, para que el empleado sea notificado vía mensaje de correo electrónico acerca de las razones para no actualizar determinadas librerías en el ordenador bajo su jurisdicción.

Opciones de ACS

Varios programas se desempeñan en este área, pero primero debemos nombrar a CFEngine, creado por el Doctor Mark Burgess en 1993 y quien junto a estudiantes de postgrado tenía diferentes problemas con ordenadores que ejecutaban diferentes versiones de UNIX. En 1998, Burgess lanzó nada más y nada menos que una teoría acerca de sistemas que se autoreparan, lo que le ocupó su tiempo hasta 2004, y no fue sino hasta el año 2008 que nuestro buen doctor cosechó los beneficios liberando la CFEngine versión 3 (ahora van por la 3.10.3).

Dicen que la necesidad es la madre de las invenciones y dicho proyecto aún se mantiene al día. Aunque no se encuentra en los repositorios oficiales de Ubuntu, lo podremos instalar rápidamente con este guión si desean probar la versión comunitaria ( y disponible para otras plataformas):

sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'
wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key
sudo apt-key add /tmp/gpg.key
sudo apt-get update && sudo apt-get install cfengine-community

ACS

También existen otros programas. Sin ser una lista definitiva, podemos nombrar:

  • Puppet (software libre y versión empresarial, ambiente GNU/Linux y Windows®).
  • Ansible (software libre, ambiente GNU/Linux).
  • Chef (software libre; versión cliente ambiente GNU/Linux y Windows®, versión servidor ambiente GNU/Linux).
  • Salt o SaltStack (software libre escrito en lenguaje Python, ambiente GNU/Linux y Windows®).
  • Otter (software privativo, plataforma Windows®).

Sobre la primera de esta lista de herramientas, Puppet, ya uno de nuestros colegas habló de ella en detalle en el año 2014. En aquella oportunidad usamos a Puppet como herramienta para instalar los agentes de Pandora FMS, pero en la segunda mitad del artículo expusimos la monitorización del servidor que ejecuta Puppet en sí mismo. Dado que han transcurrido cuatro años, consideramos procedente finalizar con una rápida actualización de dicho artículo.

Puppet: características de este ACS

Puppet, en idioma inglés, significa marioneta y Puppet Master significa titiritero y ese es el papel del servidor donde está instalado Puppet. Para poder diferenciar a las marionetas que dirige, éstas son llamadas Nodos. Puppet no “habla” directamente con el ordenador a controlar, sino que se debe instalar un agente que abra las comunicaciones.

  • Debido al uso de nodos, su administración es centralizada en torno al Puppet Master correspondiente (aunque son posibles los nodos auto-administrados, no los recomendamos).
  • Utiliza lenguaje Ruby, pero de una manera particular.
  • Sus guiones se basan en Manifiestos y un grupo de ellos conforma un Módulo. Dichos Manifiestos son guardados en cada Nodo y regularmente deben ser sincronizados con el Puppet Master (cada Administrador de Sistemas decide este aspecto).
  • Dichos guiones o archivos de procesos por lotes pueden ser aplicados de manera no secuencial.
  • ¡Importante mantener los certificados digitales para comunicaciones seguras!

Al igual que CFEngine, Puppet no está en los repositorios oficiales de Ubuntu, así que deberemos ejecutar los siguientes comandos (para otros SO):

sudo wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb
sudo dpkg -i puppetlabs-release-precise.deb
sudo apt-get update && sudo apt-get -y install puppetmaster

También podremos instalar un Puppet Dashboard y funciones avanzadas de “programación”.

Conclusión

En este vuestro blog nos preocupamos de engranar todo lo que Pandora FMS os puede ofrecer (no dudéis en contactarnos), ya que reunimos una acumulación de saberes, conocimientos y experiencias (que es el nombre que le damos a nuestros propios errores) a fin de que los aprovechéis –y evitéis el repetir desaciertos– en vuestros trabajos. Somos una comunidad que integra y comparte información y publicamos para ofreceros un panorama completo y relacionado de la ciencia -y arte- del oficio de la monitorización. ¡Hasta el próximo artículo, podéis dejar un mensaje aquí debajo, en el cajón de comentarios!

Shares