Simplifica drásticamente la administración de sistemas: Puppet en 10 min.

Siguiendo la línea del post ¿Qué es Jenkins? Explicado en menos de 10 min para quienes no lo conocen de nada, esta semana toca aprender (o tener una idea clara, siendo más exactos) qué es Puppet.
Nuevamente, este post está orientado a gente que no sabe qué es Puppet, ni para qué se utiliza. Este post es para mostrarte cómo puede ayudarte esta herramienta, y de qué quebraderos de cabeza puede librarte.  
——
Puede que ahora mismo estés pensando ¡puf! ¡No! ¡Sistemas! Eso a mí no me toca, no es problema mío.
Pero…
– ¿Qué pasa si tu empresa pasa más tiempo arreglando problemas de configuración de máquinas, tareas repetibles, que pensando estrategias para mejorar y aportar más valor al cliente?
– ¿Qué pasa si una de las causas de que tu empresa no pueda pasar a producción más rápidamente es por problemas de este tipo?
– ¿Y si se vuelve un caos pasar un cambio en la base de datos local a producción?
– O incluso… ¿te suenan los problemas de que en desarrollo, en mi entorno, en el ordenador de alguien, el código funcionaba, pero luego en producción resulta que no?
Ahí es donde Puppet puede ayudarte.

¡Puppet al rescate!

Puppet es una herramienta creada en 2005 por Luke Kanies y mantenida ahora por su empresa PuppetLabs, que sirve para administrar la configuración de sistemas, de forma más simple, automatizando las tareas repetibles.
Puedes encontrar esta herramienta bajo dos formas: open source, y comercial (Puppet Enterprise).  Aquí te dejo las diferencias que existen entre ambas.
Lo bueno que tiene Puppet, es que las configuraciones de las máquinas se pueden establecer a través de código, escribiéndolas en un lenguaje propio de Puppet.
Este lenguaje además, te permite abstraerte de las configuraciones del sistema, que están a más bajo nivel.
Con él puedes describir los recursos que una máquina debería tener (usuarios, grupos, paquetes, archivos, programas…etc.), en qué estado deberían estar y  las relaciones que existen entre ellos y Puppet se encargará del resto.
Por ejemplo, no tienes que indicar a Puppet que necesitas que en esa máquina esté Maven, y por ser una máquina Linux  el comando para instalar Maven es X. Solo tienes indicar que necesitas que Maven esté instalado, y Puppet mirará bajo qué sistema operativo está ejecutándose y actuará en consecuencia.
Aquí tienes un ejemplo en el que indicamos a Puppet que queremos tener instalada la versión 3.0.4-2 del paquete de Maven:
site
Como la configuración y las relaciones entre los recursos están escritas en código, puedes saber no solo la configuración en sí, sino el porqué de dicha configuración. Todo más sencillo.
Además,  podrás guardar las configuraciones escritas con Puppet en tu repositorio de control de versiones, con lo que además de las ventajas del control de versiones, herramientas como Jenkins podrán acceder a ellas.
Así mejoraremos el proceso de Integración continua, pudiendo desarrollar-probar-desplegar aplicaciones con las mismas configuraciones del sistema.

Bueno, ¿y lo que has hablado antes de que con Puppet voy a poder probar/desarrollar simulando la configuración de la máquina que está producción?

Puppet también se suele utilizar junto con otra herramienta llamada Vagrant, para simular entornos de testing.
Vagrant es una herramienta para gestionar máquinas virtuales. Una vez creado el código de configuración de tu servidor de producción, puedes crear una máquina virtual con Vagrant y que Puppet le aplique dicha configuración. Luego, puedes pasar la imagen virtual a la gente de desarrollo, testing, QA, para que hagan pruebas o desarrollen en una simulación del entorno de producción.

Terminando…

Enfoques de este tipo pueden hacer que nuestra organización sea más flexible y se adapte mejor a los cambios.
Además, fomentan la cultura DevOps (Devops, llevando la agilidad y el lean al departamento de sistemas), pero esto, ya es tema para otro post.
Por otra parte, Puppet se utiliza en empresas como Google, Twitter, Sun, Sony, Red Hat, Digg, SlideShare… Así que… ¿Por qué no probarlo?
Si quieres saber un poco más…

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

0 comentarios en “Simplifica drásticamente la administración de sistemas: Puppet en 10 min.”

  1. Estuve haciendo una prueba de concepto sobre Puppet hace un tiempo y me pareció una herramienta muy potente.
    No obstante, la curva de aprendizaje del lenguaje de su código me parece elevada sobre todo al principio.
    Un saludo.

  2. lo mas complicado desde el punto de vista de un aprendiz es tener el conocimiento de todos los procesos relativos a la instalacion y mantimiento de paquetes, ficheros, servicios, prioridades, relacciones, es es a mi humilde entender lo mas complicado

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *