VAGRANT — Configuración replicable y transparente. ¡Un flujo de trabajo natural!

Joaquín Ignacio Villagra Pacheco
3 min readOct 22, 2018

--

Mapeo de puertos, carpetas compartidas y configuration provision.

En este documento presento más bondades de Vagrant. Facilidad de configuración para directorios compartidos, puertos compartidos entre la maquina virtual y el cómo trabajar naturalmente el desarrollo de software con la herramienta presentada.

Si no conoces Vagrant, revisa el artículo inicial de Vagrant.

¿Dónde se realiza todo ?

El centro de todo lo que haremos es el mítico y hermoso archivo de configuración de Vagrant: Vagrantfile

1 Mapeo de puertos

# config.vm.network "forwarded_port", guest: 80, host: 8080

La linea presentada anteriormente es el ejemplo que trae el archivo de configuración para realizar una configuración de puertos compartidos entre el entorno virtual y local. En el ejemplo, se comparte el puerto 80 de la maquina virtual hacia el puerto 8080 de la maquina local.

Con esta configuración, no tendrás problema con dos aplicaciones (una del entorno local y otra del virtual) corriendo por el mismo puerto. Cambia el puerto de visualización externo por uno sin uso. ¡Problema resuelto!

2 Carpetas compartidas

# config.vm.synced_folder "./data", "/home/vagrant/data"

Similar a lo anterior, Vagrant nos permite compartir carpetas entre el entorno local y virtual de una forma muy simple. Solo debes ir a dicha línea, copiarla y agregar cuantas carpetas compartidas quieras.

Todo archivo que se cree en la maquina local será visto por la maquina virtual y viceversa. De la misma forma ocurre con los cambios que uno genera en cualquier archivo que se encuentre dentro de los directorios compartidos. ¿Interesante? Quizás ya lo pensaste, es una forma útil de compartir tu código y desarrollos, para probarlos sin riesgos en un entorno virtual. Ante cualquier problema, puedes eliminar la maquina virtual pero tus códigos quedan en tu maquina local. ¡Súper!

3 Asignación IP

Vagrant nos permite visualizar nuestra maquina virtual a través de una red interna, asignando una dirección lógica de red (IP) a nuestro entorno de trabajo.

# config.vm.network “private_network”, ip: “192.168.33.10”

4 Provision

Un nombre un poco extraño, sin embargo esta sección es muy poderosa. Imaginemos que queremos montar un entorno de trabajo estandar basado en servicios: Servicio web, dns, ftp, entre otros.

Los más familiarizados con Unix ya lo entienden, muchos se imaginaron los clásicos apt install package ó yum install packageo los más melancólicos algún make install.

Bueno, ¿agrega valor generar que cada persona de un equipo de trabajo realice toda esta configuración? La respuesta es un rotundo ¡No!

Por esto existe Provision:

config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y apache2
// your code bash here!!
SHELL

Al momento de realizar el primer vagrant up o cuando realices un vagrant up --provision se ejecutará toda la configuración del archivo Vagrantfile, lo que significa que Vagrant cargará la imagen box base que tengas configurada, posteriormente todas las configuraciones de carpetas, puertos e IP y posteriormente mediante bash cargará los comandos que le estipulaste en la sección provision.

Conclusiones

Siendo escueto y simple: Vagrant te permite hacer un entorno a medida y replicable. Configuralo una vez y mantén tu archivo Vagranfile bien guardado.

--

--

Joaquín Ignacio Villagra Pacheco

Master of Computer Science candidate. Interests Distributed platforms, big data, high performance computing, machine learning.