Vagrant - Parte 1 Instalacion

vagrant develop debian archlinux windows osx linux

Vagrant

El problema

Un caso común en el ambiente de desarrollo es el tener uno o mas equipos para trabajar, un equipo en el trabajo, un equipo en el hogar, etc. Estos pueden variar en su sistema operativo y versiones, pero siempre buscamos tener un un ambiente homogeneo, con nuestras herramientas favoritas.

Ahora en el caso del desarrollo web nos enfrentamos a diferentes ambientes al desplegar nuestro trabajo, diferentes hostings, diferentes versiones de sistemas operativos y diferentes versiones de librerias y herramientas, ademas que puede variar el entorno necesario para cada proyecto. Con esto vienen los problemas de tener un solo ambiente de trabajo para todos nuestros diferentes proyectos, problemas como: "la version de la libreria que use en desarrollo no está disponible en mi hosting donde desplegue mi aplicacion, la version de lenguaje que use en desarrollo es mas nueva que la de mi hosting, etc.

Recordando tiempos de escuela, el caso de "en mi equipo si funciona profe..."

Vagrant

Aqui entra una herramienta que nos facilita el poder tener ambientes de desarrollo separados y poder reproducir nuestro entorno de despliegue en nuestro entorno de desarrollo.

Vagrant es una herramienta desarrollada en Ruby, que nos permite crear, desplegar y descargar entornos completos, en un principio se desarrollo para trabajar con virtualbox, pero ahora tiene soporte para Vmware, AWS EC2, entre otros.

Como funciona

Vagrant tiene un repositorio bastante amplio de imagenes o "boxes", estas son imagenes creadas por usuarios o empresas, preconfiguradas con un SO y herramientas, de igual forma podemos encontrar imagenes de distribuciones, sin herramientas configuradas, listas para que nosotros las configuremos a nuestras necesidades.

Vagrant Cloud

Aqui podemos alojar de manera gratuita estas imagenes, por ejemplo yo tengo algunas imagenes creadas de Debian, Centos y otras aplicaciones:

Jaxmetalmax/Vagrant

Instalando

La instalación es bastante sencilla, Vagrant nos da un instalador para las plataformas mas comunes: Linux, OSX, Windows
dependiendo de nuestro SO podemos descargar cualquiera de estas opciones, pero antes de instalar Vagrant, lo mejor es tener instalada la version mas actualizada de VirtualBox, una vez instalado o actualizado Virtualbox, instalamos Vagrant.

NOTA: En algunas distribuciones de Linux podemos buscar Vagrant en los repositorios oficiales de la distro, por ejemplo:

Debian
sudo apt install vagrant
esto instalara Vagrant que en este momento en Debian 8.10 la version es 1.6.5 (algo desactualizada)

Archlinux (y derivados)
sudo pacman -S vagrant

Para Windows y OSX es muy simple la instalación (siguiente, siguiente... etc).

Iniciando Vagrant

Una vez instalado podemos comenzar por descargar un box para probar, podemos descargar una imagen de Debian 8.10, esta imagen la creé como base para los entornos de desarrollo. En el proximo post veremos como crear una imagen y subirla a Vagrant Cloud.

Comenzamos por abrir una terminal, creamos un directorio donde iniciaremos nuestra imagen y ejecutamos el siguiente comando:

$ mkdir debian8.10x64
$ cd debian8.10x64
$ vagrant init jaxmetalmax/debian-jessie-8.10-x64

NOTA: si ejecutamos solo "vagrant init" sin indicarle el nombre de la imagen o box, creará un archivo valido pero al que necesitamos modificar y definir el nombre de la imagen o ruta.

Con esto se creará en nuestro directorio un archivo de texto llamado Vagrantfile en el estará la configuración de nuestra maquina virtual, en ella podemos configurar muchas de las caracteristicas que la compone, nos centraremos en este post en las básicas:

Si nuestro editor tiene soporte para ruby resaltará la sintaxis de nuestro archivo de configuración, la primer linea a resaltar es "Vagrant.configure("2") do |config|" que nos indica el inicio del bloque de configuracion de nuestra vm, la siguiente linea es la de "config.vm.box = "jaxmetalmax/debian-jessie-8.10-x64"" en esta linea nos indica el nombre de la imagen o box a utilizar, podemos definir incluso una box almacenada en nuestro equipo.
Es importante leer los comentarios de nuestro archivo de configuracion ya que en ellos se indican las isntrucciones y valores para nuestra vm.

por default podemos ejecutar:

vagrant up

y con esto iniciaremos la maquina virtual, si es la primera vez que la ejecutamos y no tenemos descargada la imagen, esta se descargará:

una vez descargada la imagen nos mostrará algunos mensajes de inicio y si todo sale bien:

Con esto estará ejecutandose nuestra maquina virtual y nos podremos conectar y comenzar a trabajar con ella:

vagrant ssh

Podemos comenzar a instalar lo necesario para nuestro entorno de trabajo.

Para detener nuestra vm salimos de la sesion y ejecutamos:

vagrant halt

En el próximo post de Vagrant construiremos una imagen para vagrant y la subiremos a Vagrant Cloud.