DevOps: Vagrant + Puppet

El otro día subí un nuevo proyecto en github con las configuraciones necesarias para arrancar un servidor LAMP usando Vagrant + Puppet pero, ¿qué es Vagrant? ¿Y qué es Puppet?

Vagrant es una herramienta que nos facilita el trabajo con máquinas virtuales Virtualbox, con tres simples pasos:

Una vez ejecutados tenemos una máquina virtual funcionando que tiene un directorio compartido “/vagrant” donde veremos todos los archivos del directorio donde hemos ejecutado “vagrant init” y “vagrant up”. Además con muy poca configuración podemos mappear los puertos de la máquina virtual con nuestra máquina local.

El objetivo de todo esto es poder trabajar con la maquina virtual como si estuviéramos en nuestra maquina local.

Una vez tenemos una máquina levantada haciendo “vagrant ssh” podemos entrar en la máquina virtual e instalar todo lo necesario.

Para facilitar y automatizar este proceso usaremos la herramienta Puppet.

Puppet es una herramienta para gestionar servidores.

Puppet gestiona tus servidores. Tras describir las configuraciones de la máquina en un lenguaje declarativo, fácil de leer, Puppet iniciará tus sistemas en el estado deseado y los mantendrá así.

http://en.wikipedia.org/wiki/Simple_Declarative_Language

Puppet funciona de la siguiente manera: tienes unos archivos de configuración donde especificas que módulos quieres que el sistema tenga instalado. Por ejemplo: apache, php5, mysql. La primera vez que ejecutemos Puppet los instalará y las siguientes veces sólo comprobara que sigan existiendo y estén actualizados.

¿Cómo usamos Puppet con Vagrant? Sencillo, Vagrant de hecho ya viene preparado para trabajar con Puppet. Solo tenemos que añadir los archivos de configuración de Puppet e indicar en Archivos de configuración de Vagrant donde están para que al arrancar la máquina virtual los use.

El resultado es que además de tener una máquina virtual donde poder trabajar como si estuviéramos en local, está gestionada con Puppet.

¿Qué ganamos con esto? Todo el equipo de desarrollo trabaja contra la misma máquina virtual configurada de la misma manera, se acabaron las excusas tipo: “Es que en mi máquina funciona!”, además esta misma configuración de Puppet nos sirve no sólo para gestionar las máquinas virtuales sino otros entornos con máquinas físicas.

A esta metodología se le denomina DevOps.

Vagrant: http://vagrantup.com/

Puppet: http://puppetlabs.com/

Virtualbox: https://www.virtualbox.org/

DevOps: http://en.wikipedia.org/wiki/DevOps

Ubuntu + Android

Una gran idea de Ubuntu presentada en el Mobile World Crongress 2012. Un smartphone con Android que cuando lo dejas en la dock se conecta por hdmi a un monitor y por usb a un teclado y ratón, donde se muestra un Ubuntu de escritorio totalmente operativo.