Vagrant: configuración básica de la máquina virtual

En un post anterior escribí sobre qué es Vagrant y cómo puede utilizarse para crear entornos de desarrollo fácilmente reproducibles y compartibles. En este post repasaré alguna de las opciones de configuración más habituales, que nos permitirán trabajar con Vagrant de manera más efectiva.

Directorios compartidos

Una de las funcionalidades más útiles de Vagrant es la de definir directorios compartidos entre la máquina host y la máquina virtual, de manera que cualquier fichero que se deje en uno de estos directorios compartidos será accesible por la máquina virtual. Por defecto, Vagrant configura (en el fichero Vagrantfile) el directorio actual como un directorio compartido con la máquina virtual, accesible por estar en el directorio /vagrant. Podemos definir un directorio compartido adicional añadiendo una línea como la siguiente a nuestro Vagrantfile:

config.vm.synced_folder "./www", "/www"

Esto hará que el contenido del subdirectorio www (siendo la raíz el directorio donde se encuentra nuestro Vagrantfile) sea accesible por la máquina virtual en la ruta /www. Esto es especialmente útil si, por ejemplo, queremos utilizar la máquina virtual como un servidor web. Podemos configurar un directorio compartido en la ruta en la que el servidor busca los ficheros a servir, de forma que podemos trabajar directamente sobre dichos ficheros desde la máquina host.

Configuración de red

Vagrant nos permite configurar la interfaz de red de nuestra máquina virtual, definiendo redirecciones de puertos y direcciones IP. La redirección de puertos permite mapear un puerto de la máquina virtual con un puerto de la máquina host, de manera que podemos acceder al servicio de la máquina virtual directamente desde la máquina host. Así, por ejemplo, si tenemos un servidor web en la máquina virtual escuchando peticiones en el puerto 80 (la configuración más habitual), podemos asignarle el puerto 8000 (o cualquier otro) de nuestra máquina añadiendo la siguiente línea al Vagrantfile:

config.vm.network :forwarded_port, guest: 80, host: 8000

De esta manera podremos acceder direcamente al servidor web desde nuestra máquina utilizando la dirección http://localhost:8000. Podemos definir tantas redirecciones como queramos añadiendo más líneas como la anterior. Otras redirecciones útiles pueden ser a los puertos de bases de datos o FTP. Podemos añadir además el parámetro :auto_correct a una redirección para que Vagrant nos avise si existe alguna colisión o incompatibilidad entre las redirecciones definidas y las soluciones adoptadas por la herramienta en el momento de inicializar la máquina virtual (con init o reload).

También podemos configurar la dirección IP de nuestra máquina virtual tanto dentro de una red privada como pública. La diferencia entre ambas es que las direcciones IP definidas como privadas sólo son accesibles desde la máquina host, mientras que las públicas pueden ser accedidas por otras máquinas, lo cual puede ser útil para que varias personas accedan a la misma máquina virtual de Vagrant. Para definir la dirección IP en una red privada de nuestra máquina virtual, basta con añadir la línea siguiente al Vagrantfile:

config.vm.network "private_network", ip: "192.168.33.90"

De esta forma podremos acceder a la máquina virtual a través de la dirección IP 192.168.33.90.

Una característica muy útil es que si levantamos varias máquinas con la misma red privada virtual y usando el mismo proveedor (por defecto Virtual Box), éstas se pueden comunicar entre sí, de forma que podemos modelar entornos complejos compuestos por varias máquinas (por ejemplo una máquina con un servidor web y otra con la base de datos).

La definición de una dirección IP pública es muy similar:

config.vm.network "public_network", ip: "192.168.33.90"

Configuración del proveedor de máquinas virtuales

Vagrant utiliza un proveedor de máquinas virtuales, por defecto VirtualBox, para ejecutar dichas máquinas. En Vagrant podemos configurar ciertos parámetros específicos del proveedor directamente en el Vagrantfile. Así, por ejemplo, por defecto Vagrant con Virtual Box ejecuta las máquinas virtuales sin interfaz gráfica (modo headless). Para que Vagrant nos muestre la interfaz gráfica de la máquina virtual basta con añadir el siguiente parámetro al Vagrantfile:

config.vm.provider :virtualbox do |v|
v.gui = true
end

Otros parámetros de configuración que podemos utilizar son (se deben añadir al bucle anterior de forma similar a la línea v.gui = true):

  • customize [“modifyvm”, :id, “–memory”, 2048]: Aumenta la memoria RAM de la máquina a 2GB.
  • customize [“modifyvm”, :id, “–name”, “My Box”] o v.name =“My Box” (alias): Modifica el nombre de la máquina virtual.
  • cpus = 2: Modifica el número de CPUs de la máquina virtual.
  • customize [“modifyvm”, :id, “–cpuexecutioncap”, “50”]: Modifica el límite de ejecución al 50%. Esto significa que la máquina virtual nunca utilizará más del 50% de nuestro procesador.

Conclusiones

Como hemos visto en este post y en el anterior que dediqué a Vagrant, es muy sencillo trabajar con Vagrant y definir y configurar las características de las máquinas virtuales utilizando el fichero Vagrantfile, que además puede ser compartido fácilmente con otros desarrolladores.

The following two tabs change content below.

Mikel Pintor

Desarrollador web.

Latest posts by Mikel Pintor (see all)

Compartir: