Tutorial Campo de entrenamiento de Vagrant
Contenido
Vagrant
Instalación de Vagrant
Instrucciones para instalar Vagrant, VirtualBox y Ansible sobre Ubuntu 22.04 (Jammy Jellyfish):
1 # Actualizar la lista de paquetes
2 sudo apt update
3
4 # Instalar vagrant, ansible y virtualbox
5 sudo apt install vagrant ansible virtualbox
Introducción a Vagrant
Vagrant es una herramienta que permite crear y gestionar entornos de máquinas virtuales de forma sencilla y reproducible. Para comenzar, ejecutaremos una máquina sencilla utilizando una box de Ubuntu.
Pasos iniciales
1. **¿Por qué no debemos tener más de un `Vagrantfile` en el mismo directorio?**
En Vagrant, cada directorio puede contener solo un archivo `Vagrantfile`. Este archivo es el que Vagrant utiliza para configurar y gestionar las máquinas virtuales. Si tienes más de un `Vagrantfile` en el mismo directorio, Vagrant no sabrá cuál utilizar y esto causará errores. Por lo tanto, es importante organizar los ejercicios en directorios separados para mantener los entornos de trabajo independientes.
**Recomendación:** Cada vez que trabajes en un ejercicio de Vagrant, crea una carpeta diferente para cada entorno. De este modo, te asegurarás de que cada `Vagrantfile` está aislado y no interfiere con otros.
2. Crea un directorio para el primer ejercicio:
# Crear un directorio para el ejercicio
$ mkdir ~/vagrant/ejercicio1
$ cd ~/vagrant/ejercicio1
3. En primer lugar, inicializa el directorio para crear un entorno con un `Vagrantfile`:
# Inicializar un entorno con la box ubuntu/trusty32
$ vagrant init ubuntu/trusty32
4. Levantar una máquina virtual en base a la box descrita en el Vagrantfile:
# Levantar la máquina virtual
$ vagrant up
5. Verificar que tenemos dos sistemas funcionando:
# Entra a la máquina virtual a través de SSH
$ vagrant ssh -c 'hostnamectl' # Si pide contraseña, utiliza 'vagrant'
# En otra terminal, verificar el sistema operativo
$ hostnamectl
6. Para ver que la máquina virtual se está ejecutando, podemos verlo directamente en VirtualBox o en la terminal:
# Ver el estado de las máquinas virtuales
$ vagrant global-status
7. Para entrar en la máquina virtual:
# Iniciar sesión en la máquina virtual
$ vagrant ssh # Si pide contraseña, utiliza 'vagrant'
8. Crear un fichero en el sistema guest dentro de la máquina virtual:
# Crear un archivo en el sistema de archivos de la VM
$ cd /home
$ vi hola.txt
9. Mandar señal de apagado a la máquina y liberar recursos:
# Apagar la máquina
$ vagrant halt #(la opción -f simula un apagado forzado)
10. Levantar de nuevo la máquina y verificar que el fichero creado sigue ahí:
# Iniciar de nuevo la máquina
$ vagrant up
# Verificar que el fichero sigue presente
$ cat /home/hola.txt
11. Parar la máquina, borrarla y liberar espacio:
# Destruir la máquina y liberar los recursos
$ vagrant destroy
Gestión de boxes
Para gestionar las boxes (imágenes de máquinas virtuales), podemos listar las disponibles o eliminar aquellas que ya no necesitamos.
# Lista de boxes disponibles en nuestro sistema local
$ vagrant box list
# Para eliminar una box
$ vagrant box remove ubuntu/trusty32
Carpetas compartidas y redirección de puertos
En este ejercicio, vamos a trabajar con carpetas compartidas entre el sistema host y la máquina virtual, y también habilitaremos la redirección de puertos.
1. Crea un directorio para el segundo ejercicio, asegurándonos de que está separado del primero:
# Crear un directorio para el segundo ejercicio
$ mkdir ~/vagrant/ejercicio2
$ cd ~/vagrant/ejercicio2
2. Inicializa el entorno con la box "obihann/nginx" para levantar un servidor Nginx:
# Inicializar un entorno con la box obihann/nginx
$ vagrant init obihann/nginx
3. Arrancar la máquina virtual:
# Levantar la máquina
$ vagrant up
4. Verificar que existe la carpeta compartida indicada en el Vagrantfile:
# Verificar el directorio compartido
$ ls /vagrant
5. La máquina virtual levanta un servidor Nginx en el puerto 80 de la MV. Para habilitar la redirección de puertos, agregamos lo siguiente en el Vagrantfile:
config.vm.network "forwarded_port", guest: 80, host: 8080
6. Recargar la máquina virtual para aplicar los cambios de redirección de puertos:
# Recargar la máquina para aplicar cambios
$ vagrant reload
7. Añadir un archivo index.html en el directorio /www dentro de la máquina virtual y comprobar que se puede visualizar en el navegador del host desde localhost:8080:
# Crear el archivo index.html dentro de la máquina virtual
$ echo '<h1>Bienvenido a Nginx en Vagrant</h1>' > /www/index.html
8. Siguiendo las instrucciones anteriores, parar y borrar la máquina para liberar recursos:
# Apagar la máquina
$ vagrant halt
# Destruir la máquina
$ vagrant destroy
Ejercicios
Ejercicio 1: Crear y gestionar una nueva máquina virtual
1. Crea un nuevo entorno Vagrant utilizando la box "ubuntu/bionic64". Recuerda crear un directorio separado para este ejercicio. 2. Levanta la máquina virtual y verifica que el sistema está funcionando correctamente. 3. Dentro de la máquina virtual, crea un archivo llamado "prueba.txt" en el directorio /home. 4. Apaga la máquina, destrúyela y libera los recursos.
Ejercicio 2: Configuración de una redirección de puertos personalizada
1. Crea una nueva máquina virtual utilizando la box "nginx". Asegúrate de crear un directorio separado para este ejercicio. 2. Habilita la redirección de puertos desde el puerto 8081 del host al puerto 80 de la máquina virtual. 3. Verifica que el servidor Nginx se está ejecutando correctamente accediendo desde el navegador a localhost:8081. 4. Apaga y destruye la máquina virtual.
Soluciones
Solución al Ejercicio 1
1. Crea un entorno con la box "ubuntu/bionic64" en un directorio separado:
$ mkdir ~/vagrant/ejercicio1
$ cd ~/vagrant/ejercicio1
$ vagrant init ubuntu/bionic64
2. Levanta la máquina virtual:
$ vagrant up
3. Crea el archivo "prueba.txt" dentro de la máquina:
$ vagrant ssh
$ cd /home
$ echo 'Este es un archivo de prueba' > prueba.txt
4. Apaga la máquina y destrúyela:
$ vagrant halt
$ vagrant destroy
Solución al Ejercicio 2
1. Crea un entorno con la box "nginx" en un directorio separado:
$ mkdir ~/vagrant/ejercicio2
$ cd ~/vagrant/ejercicio2
$ vagrant init nginx
2. Agrega la redirección de puertos en el Vagrantfile:
config.vm.network "forwarded_port", guest: 80, host: 8081
3. Levanta la máquina virtual y verifica la redirección de puertos:
$ vagrant up
4. Accede al servidor Nginx en el navegador desde localhost:8081.
5. Apaga y destruye la máquina virtual:
$ vagrant halt
$ vagrant destroy