Experimentos portables (I) – VMs con Vagrant

vagrantEn el día a día del programador o investigador se hace necesario poder crear entornos de desarrollo o experimentación. Es altamente deseable que este entorno sea portable y fácilmente reproducible. El uso de maquinas virtuales y/o contenedores pueden ofrecernos esto último. Existen diversas herramientas que pueden hacernos esta tarea más liviana. En esta serie de post vamos a comenzar por conocer Vagrant.

Vagrant es una herramienta sencilla que nos permite gestionar el ciclo de vida de las maquinas virtuales. Toda la configuración la incluiremos en un fichero llamado Vagrantfile, mayormente declarativo. En el describiremos los recursos asignados a cada máquina, imagen (sistema operativo), y scripts necesarios para crear el entorno.

Vagrant es compatible con varios «proveedores», tales como VirtualBox, VMware o KVM. Adicionalmente, se ofrece un plugin para libvirt, una API que soporta diferentes plataformas de vitalización. Existen diversos repositorios para Vagrant que contienen boxes o imágenes (sistemas operativos) ya listas para descargar y ejecutar.

Una vez creado el fichero VagrantFile, podremos lanzar la maquina virtual desde línea de comandos, conectarnos a ella mediante SSH o destruirla. En muchas ocasiones nos será útil poder crear una red que conecte las maquinas. Todo ello es posible con unas pocas líneas de configuración, muy intuitivas. Aquí creamos una maquinas con CentOS, 1 core y 1GB de RAM, y que tendrá instalado Docker:

config.vm.define "server" do |server|
server.vm.box = "centos/7"
server.vm.hostname = "nombre.midominio.es"
server.vm.network "mi_red", ip: "192.168.50.3"
server.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 1
end
server.vm.provision "shell" do |s|
s.path = "instalar_docker.sh"
end
Tania Lorido
Acerca de
Investigadora de DT
Expertise: Machine learning, Cloud computing, Big data