Saltar al contenido principal

Configuración y Gestión de Máquinas Virtuales

En este tutorial de Vagrant, te enseñaré cómo configurar Vagrant en tu estación de trabajo para crear y gestionar máquinas virtuales para tu entorno de desarrollo.

Soy un gran fan de Vagrant. Siempre que quiero probar una utilidad o una herramienta relacionada con DevOps, me facilita enormemente la configuración de un entorno.

¿Qué es Vagrant?

Vagrant es una herramienta de código abierto creada por HashiCorp. Es una utilidad que actúa como un envoltorio sobre soluciones de máquinas virtuales como VirtualBox, HyperV, VMware e incluso Docker. Vagrant simplifica las complejidades de gestionar una máquina virtual a través de estas soluciones y puede automatizar la mayoría de las tareas.

Arquitectura de Vagrant

Vagrantfile

Con Vagrant, puedes crear fácilmente entornos de desarrollo virtuales a partir de imágenes de máquinas virtuales existentes y tener toda la configuración de la VM en un archivo de configuración llamado Vagrantfile. En resumen, defines todo lo que necesitas en una VM en el Vagrantfile, y Vagrant se encargará de configurarlo.

Aquí tienes un ejemplo de Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
end
end

Si alguien tiene Vagrant instalado en su sistema, puedes compartir el Vagrantfile con ellos, y podrán construir una VM similar a la que has creado. Es un flujo de trabajo similar al de Docker.

Vagrant Boxes

En el Vagrantfile de ejemplo, puedes ver un parámetro llamado config.vm.box.

Una Vagrant Box es una imagen de máquina virtual preconfigurada (como Ubuntu, CentOS, etc.). Este formato de caja puede compartirse con cualquier persona que use Vagrant. Puedes descargar cajas comunitarias disponibles en Vagrant Cloud.

También puedes agregar scripts de shell, o usar cookbooks de Chef, módulos de Puppet o playbooks de Ansible en el Vagrantfile para automatizar el proceso de configuración de la VM. Luego, puedes empaquetar la caja con todas las configuraciones y compartirla con otros miembros del equipo.

Casos de Uso de Vagrant

A continuación, se presentan algunos casos de uso reales para Vagrant:

  1. Entornos de Desarrollo: Supongamos que deseas entornos de desarrollo idénticos para todos los desarrolladores en un equipo. En este caso, puedes crear un Vagrantfile común con toda la configuración necesaria para proporcionar la VM con las dependencias del entorno de desarrollo (software). Luego, comparte el Vagrantfile con todos los desarrolladores. De esta manera, no habrá cambios en el software o configuraciones subyacentes. Algunas empresas hospedan cajas de Vagrant en una ubicación común para diferentes software aprobados, de modo que todos en la organización puedan usarlas.

  2. Entornos Aislados: Si deseas un entorno aislado para pruebas, puedes usar Vagrant para crear y destruir VMs en minutos.

Requisitos Previos

  1. Debes tener VirtualBox instalado. Puedes descargar la última versión desde VirtualBox.
  2. Debes tener acceso de administrador para instalar el software en tu estación de trabajo.
  3. Acceso a Internet para descargar algunos software e imágenes de VM.
  4. Tu estación de trabajo debe tener más de 4 GB de RAM.

Instalación de Vagrant

  1. Descarga el archivo de instalación de Vagrant desde Vagrant.

  2. Instala Vagrant desde el archivo descargado según tu sistema operativo. El ejecutable de Vagrant se añadirá automáticamente a tu ruta del sistema, y podrás comenzar a usar el comando vagrant.

  3. Para verificar la instalación de Vagrant, ejecuta el siguiente comando para ver si muestra la versión:

    vagrant --version

Primeros Pasos con Vagrant (Creando Entornos de Desarrollo)

En esta sección, te guiaré a través de los siguientes 4 procesos para obtener una comprensión básica de cómo funciona Vagrant y cómo puedes usarlo para tus propósitos de desarrollo:

  1. Crear una VM basada en Ubuntu con Vagrant, a la que llamaremos apache-vm.
  2. Acceder por SSH a la VM de Vagrant recién creada.
  3. Instalar un servidor web Apache en la VM.
  4. Acceder a la página del servidor web a través del navegador.

Crear una Máquina Virtual Usando Vagrant

  1. Elige una carpeta para guardar todos los archivos relacionados con Vagrant y crea un directorio para el proyecto de la VM:

    mkdir apache-vm && cd apache-vm
  2. Inicializa un Vagrantfile con una imagen de Ubuntu. Este archivo contendrá toda la configuración necesaria para tu referencia. Aquí utilizaremos la imagen genérica de Ubuntu disponible en Vagrant Cloud.

    Nota: En Vagrant, creamos VMs utilizando imágenes preconfiguradas de máquinas virtuales. Todas estas imágenes se pueden encontrar en el catálogo de Vagrant Cloud y son completamente gratuitas.

    Ejecuta el siguiente comando para inicializar el Vagrantfile:

    vagrant init bento/ubuntu-22.04

    Ahora deberías ver un Vagrantfile en tu carpeta actual. Si lo abres, verás que la mayoría de las líneas están comentadas. Por ahora, no te preocupes por eso. Vamos a levantar la VM de Ubuntu.

  3. Inicia la VM de Vagrant usando el siguiente comando:

    vagrant up

    Nota: Si no tienes VirtualBox instalado, recibirás un error “No usable default provider could be found for your system”.

    El comando anterior descargará primero la imagen de VM ubuntu/trusty64 desde Vagrant Cloud y luego iniciará la VM. También generará un par de claves SSH y añadirá la clave pública a la VM durante este proceso, para que podamos acceder a la máquina una vez esté en funcionamiento.

  4. Puedes verificar el estado de la VM usando el siguiente comando:

    vagrant status

    Debería mostrar el estado como running (virtualbox).

Acceder a la Máquina Virtual de Vagrant por SSH

Para conocer los detalles de SSH de la máquina de Vagrant, ejecuta el siguiente comando:

vagrant ssh-config

Este comando mostrará todos los detalles de SSH, como el nombre de usuario, la ubicación del archivo de clave, etc., como se muestra a continuación:

$ vagrant ssh-config
Host lab
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/roxsross/295/demo/vagrant/ubuntu-20/lab/.vagrant/machines/lab/virtualbox/private_key
IdentitiesOnly yes
LogLevel FATA

Ahora veamos cómo acceder a la VM iniciada por Vagrant.

Asegúrate de ejecutar los comandos desde la carpeta apache-vm.

Puedes acceder a la VM de Vagrant con el siguiente comando:

vagrant ssh

Cuando ejecutas el comando ssh, Vagrant obtiene la clave privada de la carpeta oculta .vagrant que se creó con el comando vagrant up. Esa carpeta contiene la clave SSH privada.

/apache-vm/.vagrant/machines/default/virtualbox/private_key

La siguiente imagen muestra la estructura de carpetas.

Instalar el Servidor Web Apache

Ahora vamos a instalar un servidor Apache y ver si podemos acceder a él a través de nuestro navegador web.

  1. Instala Apache con el siguiente comando:

    sudo apt-get install apache2 -y
  2. Inicia el servidor Apache:

    sudo service apache2 start
  3. Verifica el estado del servidor. Deberías ver la salida como running.

    sudo service apache2 status
  4. Utiliza curl para ver si puedes acceder a la página web. Debería mostrar la página de bienvenida de Apache 2.

    curl localhost
  5. Obtén la dirección IP de la VM con el siguiente comando:

    ip route get 1.2.3.4 | awk