Como en todo proyecto web, muchas veces sucede que los miembros de un equipo de desarrollo utilizan una plataforma distinta (Windows, Linux, Mac OS X) para construir software, no solo entre ellos, ademas distinta con la plataforma del software en el ambiente de producción, ocasionando en la mayoría de los casos inconsistencia y problemas a la hora de subir sus avances al entorno de pruebas y producción.
La solución a este problema es utilizar máquinas virtuales, para centralizar y aislar un entorno de pruebas y compartirlo entre todos los miembros del equipo.
Las soluciones de virtualización mas comunes son : Virtualbox, VM Ware, Xen, entre otros, pero requieren instalar el Sistema Operativo y configurarlos.
¿QUÉ ES VAGRANT?
Vagrant es una herramienta, escrita en Ruby, que facilita la creación de entornos virtuales de desarrollo completos, para ello nos abstrae del sistema de virtualización subyacente (Virtualbox, VM Ware u otro) y nos permite instalar y configurar el software de la máquina virtual con herramientas de automatización como Chef, Puppet o incluso los clásicos scripts de shell. El proyecto Vagrant se inició en enero del 2010 por Mitchell Hashimoto.
INSTALACIÓN
Vagrant lo puedes utilizar con varios sistemas de virtualización, para el presente ejemplo voy a utilizar VirtualBox porque es gratuito, está disponible para varias plataformas y funciona con Vagrant sin configuraciones adicionales.
En el ejemplo, lo instalaré sobre plataforma windows 7.
1. Primero descargamos la ultima versión de Vagrant y la instalamos en nuestro Sistema Operativo Windows 7.
2. Luego, descargamos y ejecutamos el virtualBox.
Iniciando nuestro entorno de desarrollo con Vagrant
Inicializamos la configuración partiendo de una imagen de base.
$ vagrant init precise32 http://files.vagrantup.com/precise32.box |
Levantamos la maquina virtual
$ vagrant up |
Con estos dos simples comandos ya tenemos funcionando nuestra máquina virtual de Ubuntu 12.04 LTS de 32 bits. Podemos conectarnos a ella por SSH con
vagrant ssh
y, una vez hemos terminado de usarla, eliminarla con vagrant destroy
.El comando
vagrant init
crea un fichero Vagrantfile
en el directorio donde lo hemos ejecutado que contiene la configuración de la máquina virtual. Estando en ese directorio, con vagrant up
podemos volver a levantar la máquina sin necesidad de hacer de nuevo el init
.BOXES EN VAGRANT
En Vagrant una
box
es un fichero que contiene la base a partir de la cual se crean las máquinas virtuales. Este fichero puede ser compartido fácilmente para que otros repliquen nuestro mismo entorno de desarrollo.En el ejemplo anterior creamos una máquina virtual con Ubuntu, pero no estamos limitados a este sistema. En la página vagrantbox.es disponemos de un listado enorme de Sistemas Operativos, tanto de 32 como de 64 bits, que podemos utilizar como base para nuestras máquinas de Vagrant. Podríamos incluso crear nuestras propias
boxes
utilizando Veewee.COMANDOS BÁSICOS
vagrant init [box-name] [box-url]
Crea el fichero de configuración
Vagrantfile
en el directorio actual. Si se pasan el segundo y el tercer parámetro, se establecen el nombre y la box
a utilizar en la configuración.vagrant up
Levanta la máquina virtual de acuerdo a la configuración del
Vagrantfile
del directorio actual.vagrant halt
Detiene la máquina virtual, pero mantiene los cambios que hayamos hecho en ella para la siguiente vez que ejecutemos
vagrant up
.vagrant reload
Es equivalente a hacer un
vagrant halt
seguido de un vagrant up
. Tras hacer cambios en un Vagrantfile
es necesario hacer reload
.vagrant suspend
Suspende la máquina virtual, salvando el estado de ejecución actual de forma que pueda ser resumido más tarde y continuar desde ese punto exacto.
vagrant resume
Resume una máquina que ha sido anteriormente suspendida con
vagrant suspend
.vagrant destroy
Detiene la máquina virtual y destruye todos los cambios que podamos haber hecho. La siguiente vez que hagamos un
vagrant up
partirá de una imagen totalmente limpia.vagrant ssh
Nos conecta por SSH a la máquina virtual que hemos levantado.
vagrant status
Muestra el estado de las máquinas levantadas con Vagrant.
vagrant box
Comando para gestionar las
boxes
que tenemos en nuestro sistema.vagrant package
Exporta la máquina virtual en ejecución en un fichero
box
que puede ser reutilizado.QUE ES EL VAGRANTFILE
El archivo
Vagrantfile
contiene el tipo de máquina virtual y su configuración. Por defecto, tras hacer vagrant init
, la configuración solo incluye el nombre de la box
que va a usar y su URL. Para que puedas realizar una configuración según las necesidades de tu proyecto puedes revisar la documentación de vagrantfile.