¿Qué es Vagrant?

Analizamos en este primer episodio de mi tutorial de Vagrant exactamente qué es Vagrant, para qué sirve y a quién le puede venir bien. Conoce más sobre Vagrant en https://www.vagrantup.com/.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Vagrant es una herramienta que nos facilita enormemente la creación y configuración de máquinas virtuales, permitiéndonos hacerlo de forma automática, declarativa y portable. En esencia, actúa como un intermediario entre nosotros y el proveedor de máquinas virtuales que elijamos, simplificando todo el proceso que normalmente implicaría configurar una máquina desde cero.

Cuando hablamos de que Vagrant es declarativo, nos referimos a que en lugar de realizar manualmente cada paso para crear una máquina virtual —como asignar memoria, CPUs, configurar redes, descargar y montar ISOs, instalar sistemas operativos y demás— simplemente escribimos un archivo de configuración que describe cómo queremos que sea esa máquina. Por ejemplo, podemos indicarle que queremos una máquina con Ubuntu 16.04, 3 GB de RAM, dos CPUs, conectada a ciertas redes virtuales y con puertos específicos abiertos, como el 80 o el 3306. Además, podemos pedirle que ejecute scripts o herramientas de aprovisionamiento como Ansible o Puppet para instalar software adicional automáticamente. Así, en cuestión de minutos, tenemos la máquina lista sin tener que hacer nada manualmente.

Esta forma de trabajar no solo ahorra tiempo, sino que también garantiza portabilidad. Los archivos de configuración que creamos con Vagrant pueden almacenarse en repositorios y compartirse con otros miembros del equipo. Esto es especialmente útil cuando trabajamos en entornos heterogéneos, donde cada desarrollador usa un sistema operativo distinto, como Windows, Linux o Mac OS. En lugar de que cada uno tenga que instalar y configurar manualmente las herramientas necesarias, todos pueden levantar la misma máquina virtual con la configuración exacta, asegurando que el entorno de desarrollo sea idéntico para todos.

Esto ayuda a evitar el clásico problema del “en mi ordenador funciona”, donde el código funciona en un equipo pero falla en otro debido a diferencias en versiones de software o configuraciones. Por ejemplo, si uno tiene PHP 7 y otro PHP 5.6, puede haber incompatibilidades que generen errores difíciles de detectar. Con Vagrant, todos trabajamos dentro de la misma máquina virtual, con el mismo sistema operativo, versiones y configuraciones, lo que reduce esos problemas.

Además, podemos configurar la máquina virtual para que sea lo más parecida posible al servidor donde finalmente desplegaremos la aplicación. Esto nos permite probar y validar que todo funcionará correctamente en producción, evitando sorpresas desagradables al hacer deploy. También es muy útil para crear entornos de pruebas o staging, donde podemos verificar que la aplicación y sus dependencias funcionan bien antes de pasar a producción.

Es importante aclarar que Vagrant no es un proveedor de máquinas virtuales por sí mismo. Necesita que tengamos instalado un software que gestione las máquinas virtuales, como VirtualBox, VMware, Hyper-V o incluso Docker. VirtualBox es una opción muy popular porque es multiplataforma y gratuita, pero si ya usamos Docker o tenemos Hyper-V en Windows, también podemos integrarlos con Vagrant. En el caso de VMware, es necesario adquirir una licencia aparte.

Para que Vagrant funcione correctamente, el proveedor de máquinas virtuales debe estar bien configurado. Por ejemplo, en Linux es fundamental tener instaladas las guest tools y los módulos DKMS para que la máquina virtual funcione sin problemas. Si no están correctamente instalados, Vagrant puede mostrar errores o quejarse durante el proceso.

En resumen, Vagrant nos permite definir y compartir entornos virtuales de desarrollo y pruebas de manera sencilla y reproducible, evitando configuraciones manuales tediosas y garantizando que todos los miembros del equipo trabajen con el mismo entorno, independientemente del sistema operativo que usen. Esto facilita el desarrollo colaborativo y la estabilidad en los despliegues de nuestras aplicaciones.

Lista de reproducción
  1. 1
    ¿Qué es Vagrant?
    8 minutos
  2. 2
    Instalamos Vagrant
    4 minutos
  3. 3
    ¿Qué es una box y cómo las obtenemos?
    9 minutos
  4. 4
    Iniciar y detener máquinas virtuales
    12 minutos
  5. 5
    Shell scripts de aprovisionamiento
    11 minutos
  6. 6
    Ansible
    11 minutos