¿Qué es Vagrant?
Es una herramienta de código abierto cuyo objetivo principal es la creación y configuración de ambientes virtuales de desarrollo de manera muy ligera, reproducible y portátil. Esto con el fin de ser desplegado múltiples veces sin dificultad en diferentes ambientes que harán de su hogar, de ahí su nombre de Vagrant (vagabundo). Estos ambientes pueden estar proveídos por populares servicios como VirtualBox, VMWare y AWS pero debe funcionar correctamente con cualquier otro proveedor.El corazón de cada instancia de maquina virtual se denomina
Vagrantfile
,
el cual es un archivo que describe la configuración de la maquina
requerida, este archivo es a menudo sometido a control de versiones para
permitir a los desarrolladores levantar el ambiente con un simple
comando y comenzar manipular el proyecto.Una de las grandes ventajas del uso de Vagrant es su integración con herramientas de suministro como Chef y Puppet las cuales se basan en la creación de recetas o scripts que permiten alterar la configuración, instalar de software y mucho más durante el proceso de levantamiento del ambiente.
¿Por qué lo necesito?
Repasemos un par de las situaciones comunes durante el desarrollo de un proyecto para ayudar a determinar las ventajas del uso de Vagrant.P: ¿Cuantas veces nos ha pasado cuando estamos desarrollando en equipo que hay cosas que a algunos les funciona en su equipo y a otro no?
Este enfoque permite que todos puedan estar trabajando bajo una copia exacta del mismo ambiente, con la misma configuración y las mismas dependencias. Las diferencias ya no son un excusa ni un problema.P: ¿Necesitas probar tu código en una plataforma especifica para verificar su funcionamiento?
Con Vagrant puedes crear ambientes desechables a la medida rápidamente.P: ¿Ya te habías encontrado con estos problemas antes y decidiste hacer las maquinas virtuales manualmente en tu programa favorito de virtualización, pero personalizarla a tus necesidades específicas no fue sencillo ni rápido?
Usa algún suministrador o crea tus mismas rutinas que se encarguen de todo al levantar el ambiente.
¿Cómo lo instalo?
Antes que nada debemos tener instalado algún software de virtualización como Virtualbox.Nota: Vagrant viene de paquete con el proveedor de Virtualbox; sin embargo soporta muchas otros pero deben ser instalados aparte como si fueran plugins.
Primero debemos ir a la página oficial de descargas, obtener el instalador según nuestro sistema operativo y seguir el proceso regular de instalación de software convencional. Esto agregará el comando
vagrant
al PATH de nuestro sistema lo cual nos permitirá ejecutarlo por el terminal.¿Cómo comienzo?
Lo primero que debemos hacer es crear unVagrantfile
el cual definirá la raíz del proyecto y describir el tipo de maquina, recursos y software necesarios para correr el proyecto.Crear el Vagrantfile
Iniciemos nuestro terminal y creemos un directorio en el cual estará alojado nuestro proyecto y definámoslo como un directorio para que Vagrant lo use:Si estas utilizando herramientas de control de versiones como Git es recomendable que el
Vagrantfile
sea incluido en el control de versiones para de esta manera permitir a
los demás desarrolladores aprovechar al máximo las ventajas que nos
ofrece Vagrant.De igual manera, si tienes algún proyecto ya existente que quieras adaptar a Vagrant puede navegar a su directorio raíz y ejecutar el comando:
Obtener la caja
Se le llama caja o Box a la imagen base que son usadas para clonar las maquinas virtuales. Nuestro siguiente paso será buscar y descargar la caja del sistema operativo que queremos utilizar para nuestro proyecto.Para esto podemos ingresar a este portal para ver una lista de algunas de las cajas disponibles. En este caso elijamos una caja común de Ubuntu y descarguémosla:
Finalmente podemos listar las cajas instaladas en nuestro sistema:
Usar la caja
Debemos decirle alVagrantfile
de nuestro proyecto que
esta nueva caja es la que vamos a usar. para esto lo abrimos con el
editor de preferencia y podremos notar mucho código de ejemplo comentado
que nos servirá en un futuro para configurar con más detalle. Por el
momento nos interesa cambiar una línea cerca del inicio del archivo que
por defecto tiene lo siguiente:Levantar el ambiente
Ya estamos listos para iniciar nuestra máquina virtual, solo debemos ejecutar el siguiente comando y la instancia será levantada en breves instantes:Si no queremos trabajar con el ambiente en un tiempo podemos suspenderlo con:
También podemos apagarlo tradicionalmente con el comando:
Para determinar el estado actual del ambiente puedes ejecutar el siguiente comando en el directorio raíz del proyecto:
Luego de que hayas jugado un poco con la máquina virtual cruda, si quieres desecharla y destruir cualquier rastro de la misma puedes hacerlo saliendo de la sesión SSH y ejecutando:
Configuración
Veamos algunos detalles básicos de configuración que nos serán de gran utilidad al trabajar con Vagrant.Carpetas sincronizadas
La carpeta del proyecto que contiene elVagrantfile
comparte los archivos entre el sistema anfitrión y el virtualizado, esto
nos permite compartir archivos fácilmente entre los ambientes. Para
identificar la carpeta compartida dentro del ambiente virtual volvamos a
levantarlo:Vagrantfile
que se encuentra en nuestro sistema anfitrión. Cualquier archivo que
coloquemos en este directorio será accesible desde cualquiera de los 2
extremos.Enrutamiento de puertos
Uno de los casos más comunes cuando tenemos una máquina virtual es la situación que estamos trabajando con proyectos enfocados a la web, y para acceder a las páginas no es lo más cómodo tener que meternos por terminal al ambiente virtual y llamarlas desde ahí, aquí entra en juego el enrutamiento de puertos, para esto localizaremos elVagrantfile
y le agregaremos una línea como esta:Suministro
Quizás el aspecto con mayor beneficios del enfoque que usa Vagrant es el uso de herramientas de suministro, el cual consiste en correr una receta o una serie de scripts durante el proceso de levantamiento del ambiente virtual que permite instalar y configurar un sin fin piezas de software, esto con el fin de que el ambiente previamente configurado y con todas las herramientas necesarias una vez haya sido levantado.La semana entrante hablaremos de Chef, una herramienta de suministro que se integra muy bien con Vagrant y está basada en la creación de recetas.Por ahora suministremos al ambiente virtual con un pequeño script que instale Apache. Copiemos las siguiente líneas en un archivo y guardémoslo en el directorio raíz del proyecto como
Actualización: ¿Cómo lo hago? Instalar y configurar Chef, ya está al aire.
instala_apache.sh
:Vagrantfile
y agreguemos la siguiente línea a la configuración:shell
para suministrar el ambiente virtual con el archivo instala_apache.sh
.Luego iniciamos el ambiente nuevamente, o si este ya se encuentra corriendo lo podemos reiniciar con:
Para verificar que efectivamente el servidor Apache ha sido levantado podemos navegar a la siguiente ruta mediante un explorador web que configuramos anteriormente:
fuente codehero.co
0 comentarios:
Publicar un comentario