Virtualizando entornos de desarrollo.

Viernes 14 de junio de 2013, por Aitor Roma Vázquez

Antes de nada explicare un poco que es Vagrant y que nos puede aportar.
no hace mucho descubrí este proyecto de virtualización es una aplicación que se apoya de otras herramientas como virtualbox y diferentes sistemas de automatización mediante plugins como son, chef , puppet o ansible.

Permitiendo de esta forma desplegar varios entornos para pruebas o incluso automatizar la creación de un entorno clusterizado con apache handoop por ejemplo.

Vagrant simplifica la creación de máquinas virtuales y todo su despliegue y replicación de forma que tengas duplicado tu entorno de trabajo en casa, trabajo, portátil, etc .
para usarlo necesitas satisfacer varias dependencias en tu sistema una y mas importante es tener instalado Virtualbox y luego instalar vagrant. este se puede instalar mediante gem de ruby pero no instala la ultima versión así que para el caso recomiendo instalar la versión 1.2.2 que encontrareis paquetizada aquí.

Una vez instalado crearemos nuestra primera máquina virtual.

Añadir una primera imagen como base

Crear fichero de configuración inicial ( Vagrantfile )

Iniciar máquina virtual

Accediendo por SSH

Suspender, despertar, detener y destruir la VM

Configuración

Como hemos visto en el paso de vagrant init , nos creaba un archivo VagrantFile
este archivo contiene la configuración de nuestra máquina virtual, los parametros tanto de memoria que vamos a asignarle a esa máquina virtual como aspectos de configuración de la red. Así que procederemos por partes explicando un poco como funciona y el tema de la red que en mi caso me costo bastante encontrar documentación al respeto.

si abrimos el archivo lo primero que nos encontramos es algo parecido a esto.

El nombre base es el nombre que hemos asignado de base al importar la máquina virtual , en este caso con el comando mencionado anteriormente.

Luego tenemos esta opción.

Es la configuración de la máquina virtual, en mi caso la cuelgo para que sea accesible desde cualquier lugar en el packaging de mi box.

Hasta aquí es lo mas típico ahora profundicemos en el networking

Networking

El networking es una de las cosas que menos clara esta en la documentación pero que a base de prueba y error he dado con la solución.

HostOnly

Este modo no tiene comunicación con la red simplemente añade una ip a la máquina

Bridge DHCP

En este caso nos haría un bridge de la interface eth0 e intentaría obtener ip mediante dhcp.

En el caso de mac y windows cambia el nombre de las interfaces de red y podemos ver como hace la nomenclatura mediante el siguiente comando.

Bridge con ip estatica

Aquí la configuración es algo confusa, puesto que se tiene de crear la configuración de red dentro de la máquina virtual editando /etc/network/interfaces e indicar así en la configuración de VagrantFile

Otras Opciones

Asignación de memoria

Para asignarle memoria a una máquina debemos editar una directiva en la máquina virtual concretamente para asignarle 2GB de ram haríamos los siguiente.

Modo ventana

El modo ventana nos inicia la máquina virtual de forma que podamos depurar errores durante el arranque de esta si por ejemplo no entra con vagrant ssh, arrancarla como si fuera una máquina mas en nuestro virtualbox.

Packaging

Lo bueno de Vagrant es que nos permite paquetizar estas máquinas generando archivos box como los que hemos visto anteriormente cuando hemos importado la base de precise32 de la web de vagrant.

La forma mas fácil es editar una máquina ya descargada hay máquinas disponibles para descargar basadas en diferentes distros aqui

Creando un archivo BOX

El comando es muy fácil de interpretar —output sera el nombre que tendra nuestra box , —base indica en que base esta basada y —vagrantfile es para incrustarle un archivo de configuración.

Para ver las bases disponibles puedes ejecutar,

NOTA: Puedes crear una box de una máquina que ya tengas creada en virtualbox para ello tienes de colocarte en el mismo directorio donde estén los archivos y en base poner el mismo nombre del directorio.

En artículos posteriores veremos como trabajar con los distintos sistemas de automatización de todas formas para que vayas haciendo la boca agua puedes visitar.
http://docs.vagrantup.com/v2/provisioning/basic_usage.html

Comentar este artículo