Virtualizando entornos de desarrollo con Vagrant

¿En qué me puede ayudar Vagrant?

¿Cuantas veces has tenido que crear un entorno de desarrollo virtual, y tras dejarlo a tu gusto, has necesitado replicarlo en otro sistema? Es una tarea realmente costosa debido a la inversión en horas que se ha de realizar.
¿O cuantas veces has desarrollado un script bajo un entorno muy concreto, y al compartirlo con los compañeros para que lo utilicen, han sido incapaces de hacerlo funcionar?
¿O simplemente has necesitado instalar cierto programa, y era superior el deseo de no ensuciar tu máquina que la necesidad de usar ese elemento?

Vagrant llega para solucionarnos estos y otros problemas. Se trata de una herramienta con la que se pueden crear entornos virtualizados de una manera sencilla, rápida, y facilmente reproducible.

Esta herramienta trabaja en base a unos scripts que definen el entorno que se va a crear; desde su S.O., parámetros de red, programas instalados… De tal manera ,que una vez tengamos una “box” de Vagrant montada, solamente tendremos que enviar el script a nuestros compañeros para que lo ejecuten, y automáticamente tengan un entorno exactamente igual al que has creado.

Como podemos imaginar tiene un potencial enorme, actualmente es uno de los métodos más empleados para el desarrollo tanto web como de aplicaciones, sobre todo si estamos inmersos en proyectos que requieren de la integración con otros sistemas, bases de datos…

Preparando el entorno de desarrollo Vagrant

Lo primero que debemos de saber es que existen dos requisitos:
    1- Tener instalado Vagrant en nuestra máquina
    2- Tener instalado algún sistema de virtualización, como VirtualBox, VMWare…

Una vez tengamos el software instalado, pasemos a la acción.

Lo primero que debemos hacer es crear una carpeta en la cual será alojada la máquina virtual.
Una vez creado, entramos dentro y ejecutamos el comando

vagrant init

Esto nos creará un fichero de configuración llamado VagrantFile, y es aquí donde es definida la máquina virtual que vamos a utilizar.

Ahora debemos crear una “box”, una forma de empaquetar las máquinas virtuales, o bajarnos una desde  http://www.vagrantbox.es/

La manera más eficiente de hacer esta operación será ejecutar el siguiente comando:


vagrant box add [nombre_distro] [url_de_distro_en_vagrantbox]

 

Con esta instrucción, vagrant nos descargará la distro desde la url especificada y la añadirá a su lista de cajas utilizables. Para visualizar las “box” de las que disponemos, ejecutar:


vagrant box list

 

Una vez terminada la descarga y configuración de la box, debemos ir a nuestra carpeta en la que pensamos alojar la máquina virtual y modificar el fichero VagrantFile.
Buscamos la siguiente línea:


config.vm.box = "base”


y la modificamos por el nombre de la distro que tenga almacenado vagrant. Nos quedaría algo así como:

config.vm.box = “nombre_distro”

Por supuesto, desde este fichero se pueden añadir diferentes configuraciones para ampliar las funcionalidades de las que dispondrá la máquina virtual.

Una vez asociado nuestro VagrantFile con el nombre de la box que vamos a utilizar, ya tenemos todo listo para lanzar nuestro entorno de desarrollo de una manera muy simple:
 

vagrant up

 

Como podrás imaginar, compartiendo la carpeta de la máquina virtual con tus compañeros, unicamente tendrán que ejecutar este comando para disponer del mismo entorno con las mismas posibildades. Realmente útil, y supone un gran ahorro de tiempo replicando sistemas complejos.

¿Y como puedo realizar esto de una manera rápida y sencilla?

Existe otra posiblidad para crear las máquinas virtuales con Vagrant, y es la siguiente:
La página https://puphpet.com/  puede ser nuestra mayor aliada a la hora de crear máquinas con diferentes configuraciones.

Esta página nos presenta una configuración del estilo “Siguiente, siguiente” al que nos tiene acostumbrados la mayoría de instaladores.
En cada una de las opciones que nos irán apareciendo podremos, por ejemplo, dar un número de procesadores determinado a la máquina, elegir el S.O. a utilizar, si dispondrá de servidor apache, nginx, mysql y un largo etc.
Una vez llegamos a la última ventana, nos ofrecerá descargarnos la “box” generada.

Esta box es una máquina virtual del tipo Vagrant, por lo que será nuestra carpeta raiz de la máquina.  Descomprimimos todo el contenido en nuestra carpeta donde almacenamos las VM's, renombramos la carpeta raiz descomprimida por el nombre de nuestra máquina virtual y listo.

Accedemos desde terminal a la carpeta en la que se aloja el VagrantFile, y como antes


Vagrant up

Y ya podremos acceder a  nuestra máquina desde el navegador, ssh, etc, dependiendo de la configuración que hayamos escogido durante el proceso de creación de la máquina virtual en puphpet.com.

Algunos comandos que deberemos conocer además:

  • Vagrant destroy -f: destruirá la información generada tras Vagrant up. Este comando no elimina la “box” por lo que seguirá siendo utilizable por otras máquinas Vagrant.
  • Vagrant box remove [nombre_maquina]: este comando elimina la “box” del sistema, por lo que no podrá ser utilizada por otras máquinas Vagrant.
  • Vagrant halt: nos permite apagar la máquina de una manera controlada

Y uno, que aunque no será realmetne necesario si trabajamos mediante ssh o navegador, nos puede resultar muy util si deseamos ver la ejecución de la máquina en vez de correrla en segundo plano, por lo que podemos instalar las Guest Additions de Virtual box.


Vagrant plugin install vagrant-vbguest


Este comando, cada vez que se inicie la máquina con vagrant up, comprobará la versión de las guest additions, y de no ser la última versión, la descarga y la instalará.