Guía rápida de Vagrant – Todo lo que necesitas saber. Acabo de volver de vacaciones y me he metido de lleno en el mundo DevOps: Vagrant, Chef, Puppet, Docker, Ansible, Kubernetes, Juju, Heat, Fleet, Mesos

Con el paradigma DevOps, pasa lo mismo que con el BigData, WebFrontend y muchos otros: cero estándares, un montón de proyectos, cada uno haciendo la guerra por su lado y desarrolladores volviéndose locos por tratar de entender qué opciones hay, cuáles son sus diferencias y cuál elegir. Y sobretodo, es imposible (y no tiene sentido) estar al día de todo.

No sé si voy a hacer una serie y explicar qué es y para qué sirve cada una de las actuales herramientas DevOps (puede que sí). Pero para empezar con esta guía rápida de Vagrant, en la que encontrarás:

Como es posible que esta guía rápida de Vagrant quede desactualizada o para ampliar conocimiento, siempre está la documentación oficial.

Guía rápida de Vagrant – ¿Qué es Vagrant?

Vagrant es una herramienta para crear y configurar máquinas virtuales portables y reproducibles, de manera automática.

Algunos definen Vagrant, como una línea de comandos para VirtualBox. No es mala definición aunque no es sólo eso.

Una de las cosas a favor de Vagrant, en contra de otras herramientas DevOps como Docker, es que cualquier informático/programador/desarrollador (incluso los que usan Windows) lo entiende a la primera: Vagrant va de configurar y automatizar la creación de máquinas virtuales.

7 características fundamentales para entender Vagrant

  1. Se instala en los equipos de los desarrolladores. Está pensado para entornos de desarrollo, ni siquiera la compañía que desarrolla Vagrant, lo recomienda en producción.
  2. Es multiplataforma: Mac, Windows, CentOS y Debian.
  3. Está pensado para montar entornos de desarrollo portables y reproducibles entre desarrolladores.
  4. Por defecto, utiliza Virtual Box para virtualizar, pero funciona con cualquier software de virtualización.
  5. Utiliza archivos de configuración Vagrantfile, con una sintaxis sencilla, apta para dummies
  6. Los archivos de configuración Vagrantfile generan una box (máquina virtual) que puede ser compartida a través de repositorios (a lo Maven, Node, Bower, etc.)
  7. Hay repositorios públicos de Vagrant boxes, por ejemplo este o este.

¿Para que NO sirve Vagrant?

A veces es más fácil entender una herramienta sabiendo para qué no lo puedes usar. En el caso de Vagrant:

  1. No está pensado para gestionar la infraestructura de servidores (para esto está chef o puppet)
  2. No está pensado para ejecutarse en un servidor, sino en el propio equipo del desarrollador
  3. Y sobretodo, no está pensado para producción

Guía ultra-rápida de Vagrant

Instalación

  1. Primero instala VirtualBox
  2. Luego instala Vagrant

Arrancando una máquina virtual Ubuntu con Vagrant

Es tan fácil como ejecutar desde la línea de comandos de tu equipo estás dos instrucciones:

Terminal: ~

$
vagrant init hashicorp/precise64

Terminal: ~

$
vagrant up

Para conectar por ssh a la máquina virtual una vez está arrancada:

Terminal: ~

$
vagrant ssh

Para suspender, parar o eliminar la máquina virtual tenemos otros comandos:

Terminal: ~

$
vagrant suspend

Terminal: ~

$
vagrant halt

Terminal: ~

$
vagrant destroy

Fácil y para todos los públicos.

¿Por qué usar Vagrant?

Llegados a este punto alguien se puede estar preguntando:

¿Por qué usar Vagrant y no directamente crear máquinas virtuales con VirtualBox? (u otro software)

Si se te ha venido a la cabeza esa pregunta estás en la prehistoria de la informática y lo primero que deberías hacer es leer un poco sobre las ventajas del paradigma DevOps en general.

Y respondiendo a la pregunta, estos son algunos motivos que se me ocurren a mí:

  • Vagrant es una herramienta de consola, con lo cual permite automatizar procesos en lugar de crear máquinas virtuales y entornos de desarrollo manualmente
  • El lenguaje de scripting de Vagrant permite compartir las configuraciones de cada proyecto, sin almacenar las máquinas virtuales completas, ahorrando espacio en disco.
  • Se pueden almacenar las configuraciones en repositorios de código y que se mejoren de manera colaborativa
  • Evita dependencias y cuellos de botella con departamentos de IT que tanto nos gustan a los desarrolladores
  • Las máquinas virtuales se ejecutan en el equipo del desarrollador, de manera que tú (como desarrollador) controlas todos los recursos
  • Se simplifica la infraestructura interna de la compañía, consumiendo menos recursos hardware (servidores)
  • Se estandariza” y agiliza la manera de crear entornos de desarrollo y demos

Hasta aquí la primera entrada de la guía rápida de Vagrant, sigue por auí para crear una máquina virtual con Vagrant desde cero.

Sigue por aquí para saber más sobre Vagrant.