13 – vagrant box (vagrant 02)

Bienvenidos al episodio 13 de deployandome, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 7 de abril de 2017.

El capitulo anterior nosotros hablamos de vagrant e iniciamos una serie sobre esta herramienta.

Vagrant es una herramienta que me permite describir y compartir entornos de desarrollo. Lo utilizo para hacer entornos para aplicaciones o servicios, me permite levantar la infraestructura para tener un servicio corriendo.

Esta edición vamos a hablar de un insumo que requiere vagrant para funcionar que es lo que se denomina o él llama una BOX. ¿qué es una box? Podemos visualizarlo como una imagen de una maquina virtual que se instancia para poder levantar la máquina que queremos crear. Pero no es exactamente eso, pues es un disco independiente de la tecnología de virtualización que tiene unas configuraciones básicas para que vagrant pueda hacer su trabajo. Esas configuraciones básicas van a permitir que vagrant se conecte cuando la máquina esté encendida para poder hacer el aprovisionamiento inicial.

¿Cómo funciona esta box en el esquema de trabajo de vagrant?

Cuando damos el comando vagrant up se va a copiar este disco dentro del sistema de virtualización que corresponda y le va a pedir al hardware que inicie la máquina virtual.

Vagrant maneja las boxes en un sistema de repositorio que el aloja localmente. A ese repositorio se accede con el comando vagrant box y nos va a permitir incluir nuevas boxes, actualizar o borrar boxes que ya no quiero mantener en el sistema.

¿Cómo agrego boxes a mi sistema?

Las boxes se comparten y se pueden utilizar boxes creadas por otros. Estas boxes ya tienen las principales distribuciones de Linux y muchas de ellas vienen con funcionalidad ore-instaladas.

Pero también puedo crear mis propias boxes y para esto tenemos dos formas:

Una de ellas podemos llamar la forma básica, que es crear una máquina virtual que respete esa configuración que requiere vagrant, que es disponer de un usuario ‘vagrant’ con acceso sin password por sudo, una configuración de acceso ssh para ese usuario y opcionalmente las guest additions. Entonces podemos usar el comando vagrant package y que va a extraer del sistema de virtualización el disco y lo va a empaquetar en un archivo box que luego puedo incorporar en mi repositorio.

La otra forma, que podemos llamar más profesional, es mediante el utilitario PACKER de Hashicorp. Packer es una utilidad para crear archivos box BOX, AMI de Amazon, imágenes de Openstack u otras plataformas de nube y virtualización. Packer trabaja en base a un archivo json que tiene varias etapas para la creación de la imágen que voy a utilizar. Con el comando packer build, a partir del son, levantando una máquina virtual, instalando todo lo necesario y haciendo sus configuraciones, estará exportando el archivo BOX y borrando todo los archivos y lo que creó para esa función.

Para mi la box es en sí un archivo que voy a poder compartir.

Una forma es la forma oficial a través del sitio Atlas de la propia Haghicorp. El propio comando vagrant dispone de algunos parámetros para validarse contra Atlas y compartir boxes.

También hay algunos repositorios públicos, como vagrantbox.es desde donde voy a poder descargar boxes.

La otra forma es tener mi propio servidor donde voy a poder compartir boxes que yo mismo deje disponible para la infraestructura local.

Pero también como cualquier archivo, por ejemplo con un pendrive, y utilizando el comando vagrant box add para incluir ese archivo en mi repositorio de boxes.

Por eso las boxes lo podemos considerar el paso cero, antes de levantar un entorno con vagrant up.

Vamos a seguir hablando de vagrant en próximas ediciones.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Hasta la próxima edición.

Referencias: