Diferencia entre revisiones de «Tutorial Campo de entrenamiento de Vagrant»

De Wiki de EGC
Saltar a: navegación, buscar
(Página creada con «= Vagrant = == Instalación de Vagrant == Instrucciones para instalar Vagrant, VirtualBox y Ansible sobre Ubuntu 22.04 (Jammy Jellyfish): <syntaxhighlight lang="bash" li...»)
 
Línea 19: Línea 19:
 
=== Pasos iniciales ===
 
=== Pasos iniciales ===
  
1. **¿Por qué no debemos tener más de un `Vagrantfile` en el mismo directorio?**
+
==== ¿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.
+
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.
+
'''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 primer ejercicio ====
 +
 
 +
Antes de empezar con la creación de la máquina virtual, vamos a crear un directorio para este ejercicio. Esto es esencial para que el entorno de trabajo esté organizado y no interfiera con otros posibles proyectos o ejercicios.
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 
# Crear un directorio para el ejercicio
 
# Crear un directorio para el ejercicio
$ mkdir ~/vagrant/ejercicio1
+
$ mkdir ejercicio1
$ cd ~/vagrant/ejercicio1
+
$ cd ejercicio1
 
</syntaxhighlight>
 
</syntaxhighlight>
  
3. En primer lugar, inicializa el directorio para crear un entorno con un `Vagrantfile`:
+
==== Inicializar un entorno con un `Vagrantfile` ====
 +
 
 +
Ahora que tenemos el directorio preparado, vamos a inicializar un entorno de trabajo con Vagrant. Al ejecutar el siguiente comando, Vagrant creará un archivo llamado `Vagrantfile`, que contendrá la configuración básica para la máquina virtual que vamos a levantar.
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 40: Línea 44:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
4. Levantar una máquina virtual en base a la box descrita en el Vagrantfile:
+
Esto generará un archivo `Vagrantfile` en el directorio actual, que contiene las configuraciones predeterminadas para crear una máquina virtual basada en Ubuntu 14.04 (Trusty Tahr).
 +
 
 +
 
 +
===== Explicación del `Vagrantfile` Generado =====
 +
 
 +
Cuando ejecutas el comando `vagrant init`, Vagrant genera un archivo llamado `Vagrantfile` en el directorio actual. Este archivo contiene la configuración básica para la máquina virtual. A continuación se muestra un ejemplo de un `Vagrantfile` básico y una explicación de cada parte.
 +
 
 +
<syntaxhighlight lang="ruby">
 +
# -*- mode: ruby -*-
 +
# vi: set ft=ruby :
 +
 
 +
Vagrant.configure("2") do |config|
 +
 
 +
  # Definición de la Box
 +
  config.vm.box = "ubuntu/trusty32"
 +
 
 +
  # Redirección de puertos
 +
  # Este comando es útil si se quiere acceder a servicios dentro de la máquina
 +
  config.vm.network "forwarded_port", guest: 80, host: 8080
 +
 
 +
  # Carpeta compartida entre la máquina host y la máquina virtual
 +
  config.vm.synced_folder ".", "/vagrant"
 +
 
 +
  # Habilitar el uso de VirtualBox como proveedor
 +
  config.vm.provider "virtualbox" do |vb|
 +
    # Personalización de la memoria RAM para la VM
 +
    vb.memory = "1024"
 +
  end
 +
 
 +
end
 +
</syntaxhighlight>
 +
 
 +
====== Descripción de cada sección ======
 +
 
 +
'''Configuración Básica de Vagrant''':
 +
<pre>
 +
Vagrant.configure("2") do |config|
 +
</pre>
 +
 
 +
Esta línea indica que se está utilizando la versión 2 de la configuración de Vagrant. El bloque que sigue (`do |config|`) define todas las configuraciones para la máquina virtual.
 +
 
 +
'''Box a utilizar''':
 +
<pre> 
 +
config.vm.box = "ubuntu/trusty32"
 +
</pre>
 +
 
 +
Define la box que se utilizará para crear la máquina virtual. En este caso, se utiliza una box de Ubuntu 14.04 de 32 bits, pero puedes cambiarla a cualquier otra según tus necesidades.
 +
 
 +
'''Redirección de puertos''':
 +
<pre>
 +
config.vm.network "forwarded_port", guest: 80, host: 8080
 +
</pre>
 +
 
 +
Esta línea establece la redirección de puertos entre la máquina virtual y el host. En este caso, se redirige el puerto 80 de la máquina virtual al puerto 8080 del host. Esto es útil para acceder a servicios como un servidor web que esté corriendo dentro de la máquina virtual desde el navegador del host.
 +
 
 +
'''Carpeta compartida''':
 +
<pre>
 +
config.vm.synced_folder ".", "/vagrant"
 +
</pre>
 +
 
 +
Aquí se establece una carpeta compartida entre el host y la máquina virtual. El primer parámetro (`"."`) se refiere a la carpeta actual en el host, y el segundo (`"/vagrant"`) es la carpeta en la máquina virtual. Cualquier archivo colocado en la carpeta del host será accesible dentro de la máquina virtual y viceversa.
 +
 
 +
'''Configuración de VirtualBox''':
 +
<pre>
 +
config.vm.provider "virtualbox" do |vb|
 +
vb.memory = "1024"
 +
end
 +
</pre>
 +
 
 +
Esta sección configura el proveedor de virtualización a utilizar (en este caso, VirtualBox). En este caso, se ha configurado para que la máquina virtual tenga 1 GB de memoria RAM (1024 MB). Puedes ajustar este valor según los recursos disponibles en tu máquina.
 +
 
 +
==== Levantar la máquina virtual ====
 +
 
 +
Con el `Vagrantfile` listo, es hora de levantar la máquina virtual. El siguiente comando descargará la imagen de la box (si no está previamente descargada) y creará una máquina virtual según las especificaciones del `Vagrantfile`.
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 47: Línea 124:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
5. Verificar que tenemos dos sistemas funcionando:
+
Este proceso puede tardar algunos minutos dependiendo de la velocidad de tu conexión a Internet, ya que Vagrant descargará la box y configurará la máquina virtual.
 +
 
 +
==== Verificar que tenemos dos sistemas funcionando ====
 +
 
 +
Una vez que la máquina virtual esté en funcionamiento, podemos verificar que todo está bien ejecutándose. Primero, accedemos a la máquina virtual a través de SSH y comprobamos el nombre del sistema operativo con el siguiente comando:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 
# Entra a la máquina virtual a través de SSH
 
# Entra a la máquina virtual a través de SSH
 
$ vagrant ssh -c 'hostnamectl' # Si pide contraseña, utiliza 'vagrant'
 
$ vagrant ssh -c 'hostnamectl' # Si pide contraseña, utiliza 'vagrant'
 +
</syntaxhighlight>
 +
 +
En otra terminal, verifica el sistema operativo del host para comprobar que estamos trabajando con dos sistemas diferentes:
  
# En otra terminal, verificar el sistema operativo
+
<syntaxhighlight lang="sh">
 +
# En el host, verificar el sistema operativo
 
$ hostnamectl
 
$ hostnamectl
 
</syntaxhighlight>
 
</syntaxhighlight>
  
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 ====
 +
 
 +
Puedes comprobar el estado de todas las máquinas virtuales que Vagrant está gestionando con el siguiente comando. Esto te permitirá ver si tu máquina está funcionando correctamente:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 64: Línea 151:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
7. Para entrar en la máquina virtual:
+
==== Entrar en la máquina virtual ====
 +
 
 +
Si deseas interactuar con la máquina virtual, puedes acceder a ella en cualquier momento utilizando SSH. El siguiente comando te permitirá iniciar sesión en la máquina virtual:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 71: Línea 160:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
8. Crear un fichero en el sistema guest dentro de la máquina virtual:
+
==== Crear un fichero en el sistema guest ====
 +
 
 +
Dentro de la máquina virtual, podemos crear un archivo para comprobar que tenemos acceso al sistema de archivos. El siguiente comando creará un archivo de texto llamado `hola.txt` en el directorio `/home` de la máquina virtual:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 
# Crear un archivo en el sistema de archivos de la VM
 
# Crear un archivo en el sistema de archivos de la VM
 
$ cd /home
 
$ cd /home
$ vi hola.txt
+
$ sudo vi hola.txt
 
</syntaxhighlight>
 
</syntaxhighlight>
  
9. Mandar señal de apagado a la máquina y liberar recursos:
+
Dentro del archivo, puedes escribir cualquier contenido y guardarlo.
 +
 
 +
==== Apagar la máquina y liberar recursos ====
 +
 
 +
Cuando hayas terminado de trabajar, es recomendable apagar la máquina para liberar recursos en tu máquina local. Puedes hacerlo con el siguiente comando:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 +
#Sal de la terminal de la máquina virtual
 +
$ exit
 
# Apagar la máquina
 
# Apagar la máquina
 
$ vagrant halt #(la opción -f simula un apagado forzado)
 
$ vagrant halt #(la opción -f simula un apagado forzado)
 
</syntaxhighlight>
 
</syntaxhighlight>
  
10. Levantar de nuevo la máquina y verificar que el fichero creado sigue ahí:
+
Esto apagará la máquina virtual y liberará los recursos que estaba utilizando.
 +
 
 +
==== Levantar la máquina nuevamente ====
 +
 
 +
Al levantar nuevamente la máquina virtual, podemos comprobar que el archivo que creamos sigue existiendo en el sistema. Vagrant guarda el estado de la máquina virtual, por lo que los cambios realizados se conservan entre apagados y arranques:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 
# Iniciar de nuevo la máquina
 
# Iniciar de nuevo la máquina
 
$ vagrant up
 
$ vagrant up
 +
# Entrar en la máquina mediante ssh
 +
$ vagrant ssh
 
# Verificar que el fichero sigue presente
 
# Verificar que el fichero sigue presente
 
$ cat /home/hola.txt
 
$ cat /home/hola.txt
 
</syntaxhighlight>
 
</syntaxhighlight>
  
11. Parar la máquina, borrarla y liberar espacio:
+
==== Parar y destruir la máquina virtual ====
 +
 
 +
Cuando ya no necesitemos la máquina virtual, podemos detenerla y destruirla para liberar los recursos del sistema. El siguiente comando apagará la máquina y la eliminará completamente:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 +
# Salir de la máquina virtual
 +
$ exit
 
# Destruir la máquina y liberar los recursos
 
# Destruir la máquina y liberar los recursos
 
$ vagrant destroy
 
$ vagrant destroy
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== Gestión de boxes ===
+
== 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.
+
Vagrant gestiona las boxes, que son imágenes de máquinas virtuales preconfiguradas. Es importante saber cómo listar y eliminar las boxes cuando ya no las necesitemos.
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 114: Línea 221:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
== Carpetas compartidas y redirección de puertos ==
+
== 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.
+
En este ejercicio, aprenderás a trabajar con carpetas compartidas entre el sistema host y la máquina virtual, y a configurar la redirección de puertos para acceder a servicios dentro de la máquina virtual desde el host.
  
1. Crea un directorio para el segundo ejercicio, asegurándonos de que está separado del primero:
+
==== Crear un directorio para el segundo ejercicio ====
 +
 
 +
Vamos a crear un nuevo directorio para este ejercicio. Esto nos permite mantener los entornos de trabajo aislados:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 
# Crear un directorio para el segundo ejercicio
 
# Crear un directorio para el segundo ejercicio
$ mkdir ~/vagrant/ejercicio2
+
$ mkdir ejercicio2
$ cd ~/vagrant/ejercicio2
+
$ cd ejercicio2
 
</syntaxhighlight>
 
</syntaxhighlight>
  
2. Inicializa el entorno con la box "obihann/nginx" para levantar un servidor Nginx:
+
==== Inicializar el entorno con la box "obihann/nginx" ====
 +
 
 +
Vamos a utilizar la box "obihann/nginx", que es una imagen preconfigurada con Nginx. Inicializamos el entorno con esta box:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 133: Línea 244:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
3. Arrancar la máquina virtual:
+
==== Levantar la máquina virtual ====
 +
 
 +
Ahora que hemos configurado el entorno con la box de Nginx, levantamos la máquina virtual:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 140: Línea 253:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
4. Verificar que existe la carpeta compartida indicada en el Vagrantfile:
+
==== Verificar la carpeta compartida ====
 +
 
 +
Vagrant crea automáticamente una carpeta compartida en la máquina virtual. Para verificar que esta carpeta existe, ejecutamos el siguiente comando dentro de la máquina virtual:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 147: Línea 262:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
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:
+
Esta carpeta `/vagrant` está vinculada al directorio en el host donde ejecutaste el comando `vagrant init`.
 +
 
 +
==== Configurar la redirección de puertos ====
 +
 
 +
La máquina virtual que estamos usando ejecuta un servidor Nginx en el puerto 80. Para poder acceder a este servidor desde el navegador del host, necesitamos redirigir el puerto 80 de la máquina virtual al puerto 8080 de nuestro host. Para hacer esto, editamos el `Vagrantfile` y agregamos la siguiente línea:
  
 
<syntaxhighlight lang="ruby">
 
<syntaxhighlight lang="ruby">
Línea 153: Línea 272:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
6. Recargar la máquina virtual para aplicar los cambios de redirección de puertos:
+
Esto hará que el servidor Nginx en el puerto 80 de la máquina virtual sea accesible desde el puerto 8080 en tu máquina host.
 +
 
 +
==== Recargar la máquina virtual ====
 +
 
 +
Después de realizar cambios en el `Vagrantfile`, debemos recargar la máquina virtual para aplicar la configuración:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 160: Línea 283:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
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:
+
==== Añadir un archivo index.html ====
 +
 
 +
Para comprobar que la redirección de puertos funciona correctamente, añadimos un archivo `index.html` en el directorio `/www` de la máquina virtual. Este archivo se mostrará cuando accedamos a la dirección `localhost:8080` en el navegador.
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
 +
# Entrar en la máquina virtual
 +
$ vagrant ssh
 +
# Ir al directorio vagrant/www
 +
$ cd vagrant/www
 
# Crear el archivo index.html dentro de la máquina virtual
 
# Crear el archivo index.html dentro de la máquina virtual
$ echo '<h1>Bienvenido a Nginx en Vagrant</h1>' > /www/index.html
+
$ echo '<h1>Bienvenido a Nginx en Vagrant</h1>' > index.html
 
</syntaxhighlight>
 
</syntaxhighlight>
  
8. Siguiendo las instrucciones anteriores, parar y borrar la máquina para liberar recursos:
+
Ahora, desde el navegador del host, podemos ver el sistema funcionando en la dirección http://localhost:8080/.
 +
 
 +
==== Parar y destruir la máquina virtual ====
 +
 
 +
Al igual que en el primer ejercicio, es recomendable apagar y destruir la máquina para liberar recursos cuando hayamos terminado de trabajar con ella:
  
 
<syntaxhighlight lang="sh">
 
<syntaxhighlight lang="sh">
Línea 174: Línea 307:
  
 
# Destruir la máquina
 
# Destruir la máquina
$ vagrant destroy
 
</syntaxhighlight>
 
 
== 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:
 
 
<syntaxhighlight lang="sh">
 
$ mkdir ~/vagrant/ejercicio1
 
$ cd ~/vagrant/ejercicio1
 
$ vagrant init ubuntu/bionic64
 
</syntaxhighlight>
 
 
2. Levanta la máquina virtual:
 
 
<syntaxhighlight lang="sh">
 
$ vagrant up
 
</syntaxhighlight>
 
 
3. Crea el archivo "prueba.txt" dentro de la máquina:
 
 
<syntaxhighlight lang="sh">
 
$ vagrant ssh
 
$ cd /home
 
$ echo 'Este es un archivo de prueba' > prueba.txt
 
</syntaxhighlight>
 
 
4. Apaga la máquina y destrúyela:
 
 
<syntaxhighlight lang="sh">
 
$ vagrant halt
 
$ vagrant destroy
 
</syntaxhighlight>
 
 
=== Solución al Ejercicio 2 ===
 
1. Crea un entorno con la box "nginx" en un directorio separado:
 
 
<syntaxhighlight lang="sh">
 
$ mkdir ~/vagrant/ejercicio2
 
$ cd ~/vagrant/ejercicio2
 
$ vagrant init nginx
 
</syntaxhighlight>
 
 
2. Agrega la redirección de puertos en el Vagrantfile:
 
 
<syntaxhighlight lang="ruby">
 
config.vm.network "forwarded_port", guest: 80, host: 8081
 
</syntaxhighlight>
 
 
3. Levanta la máquina virtual y verifica la redirección de puertos:
 
 
<syntaxhighlight lang="sh">
 
$ vagrant up
 
</syntaxhighlight>
 
 
4. Accede al servidor Nginx en el navegador desde localhost:8081.
 
 
5. Apaga y destruye la máquina virtual:
 
 
<syntaxhighlight lang="sh">
 
$ vagrant halt
 
 
$ vagrant destroy
 
$ vagrant destroy
 
</syntaxhighlight>
 
</syntaxhighlight>

Revisión del 17:41 11 nov 2024

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

¿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.

Crear un directorio para el primer ejercicio

Antes de empezar con la creación de la máquina virtual, vamos a crear un directorio para este ejercicio. Esto es esencial para que el entorno de trabajo esté organizado y no interfiera con otros posibles proyectos o ejercicios.

# Crear un directorio para el ejercicio
$ mkdir ejercicio1
$ cd ejercicio1

Inicializar un entorno con un `Vagrantfile`

Ahora que tenemos el directorio preparado, vamos a inicializar un entorno de trabajo con Vagrant. Al ejecutar el siguiente comando, Vagrant creará un archivo llamado `Vagrantfile`, que contendrá la configuración básica para la máquina virtual que vamos a levantar.

# Inicializar un entorno con la box ubuntu/trusty32
$ vagrant init ubuntu/trusty32

Esto generará un archivo `Vagrantfile` en el directorio actual, que contiene las configuraciones predeterminadas para crear una máquina virtual basada en Ubuntu 14.04 (Trusty Tahr).


Explicación del `Vagrantfile` Generado

Cuando ejecutas el comando `vagrant init`, Vagrant genera un archivo llamado `Vagrantfile` en el directorio actual. Este archivo contiene la configuración básica para la máquina virtual. A continuación se muestra un ejemplo de un `Vagrantfile` básico y una explicación de cada parte.

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

Vagrant.configure("2") do |config|

  # Definición de la Box
  config.vm.box = "ubuntu/trusty32"

  # Redirección de puertos
  # Este comando es útil si se quiere acceder a servicios dentro de la máquina
  config.vm.network "forwarded_port", guest: 80, host: 8080

  # Carpeta compartida entre la máquina host y la máquina virtual
  config.vm.synced_folder ".", "/vagrant"

  # Habilitar el uso de VirtualBox como proveedor
  config.vm.provider "virtualbox" do |vb|
    # Personalización de la memoria RAM para la VM
    vb.memory = "1024"
  end

end
Descripción de cada sección

Configuración Básica de Vagrant:

Vagrant.configure("2") do |config|

Esta línea indica que se está utilizando la versión 2 de la configuración de Vagrant. El bloque que sigue (`do |config|`) define todas las configuraciones para la máquina virtual.

Box a utilizar:

  
config.vm.box = "ubuntu/trusty32"

Define la box que se utilizará para crear la máquina virtual. En este caso, se utiliza una box de Ubuntu 14.04 de 32 bits, pero puedes cambiarla a cualquier otra según tus necesidades.

Redirección de puertos:

config.vm.network "forwarded_port", guest: 80, host: 8080

Esta línea establece la redirección de puertos entre la máquina virtual y el host. En este caso, se redirige el puerto 80 de la máquina virtual al puerto 8080 del host. Esto es útil para acceder a servicios como un servidor web que esté corriendo dentro de la máquina virtual desde el navegador del host.

Carpeta compartida:

config.vm.synced_folder ".", "/vagrant"

Aquí se establece una carpeta compartida entre el host y la máquina virtual. El primer parámetro (`"."`) se refiere a la carpeta actual en el host, y el segundo (`"/vagrant"`) es la carpeta en la máquina virtual. Cualquier archivo colocado en la carpeta del host será accesible dentro de la máquina virtual y viceversa.

Configuración de VirtualBox:

config.vm.provider "virtualbox" do |vb|
 vb.memory = "1024"
end

Esta sección configura el proveedor de virtualización a utilizar (en este caso, VirtualBox). En este caso, se ha configurado para que la máquina virtual tenga 1 GB de memoria RAM (1024 MB). Puedes ajustar este valor según los recursos disponibles en tu máquina.

Levantar la máquina virtual

Con el `Vagrantfile` listo, es hora de levantar la máquina virtual. El siguiente comando descargará la imagen de la box (si no está previamente descargada) y creará una máquina virtual según las especificaciones del `Vagrantfile`.

# Levantar la máquina virtual
$ vagrant up

Este proceso puede tardar algunos minutos dependiendo de la velocidad de tu conexión a Internet, ya que Vagrant descargará la box y configurará la máquina virtual.

Verificar que tenemos dos sistemas funcionando

Una vez que la máquina virtual esté en funcionamiento, podemos verificar que todo está bien ejecutándose. Primero, accedemos a la máquina virtual a través de SSH y comprobamos el nombre del sistema operativo con el siguiente comando:

# Entra a la máquina virtual a través de SSH
$ vagrant ssh -c 'hostnamectl' # Si pide contraseña, utiliza 'vagrant'

En otra terminal, verifica el sistema operativo del host para comprobar que estamos trabajando con dos sistemas diferentes:

# En el host, verificar el sistema operativo
$ hostnamectl

Ver el estado de las máquinas virtuales

Puedes comprobar el estado de todas las máquinas virtuales que Vagrant está gestionando con el siguiente comando. Esto te permitirá ver si tu máquina está funcionando correctamente:

# Ver el estado de las máquinas virtuales
$ vagrant global-status

Entrar en la máquina virtual

Si deseas interactuar con la máquina virtual, puedes acceder a ella en cualquier momento utilizando SSH. El siguiente comando te permitirá iniciar sesión en la máquina virtual:

# Iniciar sesión en la máquina virtual
$ vagrant ssh # Si pide contraseña, utiliza 'vagrant'

Crear un fichero en el sistema guest

Dentro de la máquina virtual, podemos crear un archivo para comprobar que tenemos acceso al sistema de archivos. El siguiente comando creará un archivo de texto llamado `hola.txt` en el directorio `/home` de la máquina virtual:

# Crear un archivo en el sistema de archivos de la VM
$ cd /home
$ sudo vi hola.txt

Dentro del archivo, puedes escribir cualquier contenido y guardarlo.

Apagar la máquina y liberar recursos

Cuando hayas terminado de trabajar, es recomendable apagar la máquina para liberar recursos en tu máquina local. Puedes hacerlo con el siguiente comando:

#Sal de la terminal de la máquina virtual
$ exit
# Apagar la máquina
$ vagrant halt #(la opción -f simula un apagado forzado)

Esto apagará la máquina virtual y liberará los recursos que estaba utilizando.

Levantar la máquina nuevamente

Al levantar nuevamente la máquina virtual, podemos comprobar que el archivo que creamos sigue existiendo en el sistema. Vagrant guarda el estado de la máquina virtual, por lo que los cambios realizados se conservan entre apagados y arranques:

# Iniciar de nuevo la máquina
$ vagrant up
# Entrar en la máquina mediante ssh
$ vagrant ssh 
# Verificar que el fichero sigue presente
$ cat /home/hola.txt

Parar y destruir la máquina virtual

Cuando ya no necesitemos la máquina virtual, podemos detenerla y destruirla para liberar los recursos del sistema. El siguiente comando apagará la máquina y la eliminará completamente:

# Salir de la máquina virtual
$ exit
# Destruir la máquina y liberar los recursos
$ vagrant destroy

Gestión de Boxes

Vagrant gestiona las boxes, que son imágenes de máquinas virtuales preconfiguradas. Es importante saber cómo listar y eliminar las boxes cuando ya no las necesitemos.

# 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, aprenderás a trabajar con carpetas compartidas entre el sistema host y la máquina virtual, y a configurar la redirección de puertos para acceder a servicios dentro de la máquina virtual desde el host.

Crear un directorio para el segundo ejercicio

Vamos a crear un nuevo directorio para este ejercicio. Esto nos permite mantener los entornos de trabajo aislados:

# Crear un directorio para el segundo ejercicio
$ mkdir ejercicio2
$ cd ejercicio2

Inicializar el entorno con la box "obihann/nginx"

Vamos a utilizar la box "obihann/nginx", que es una imagen preconfigurada con Nginx. Inicializamos el entorno con esta box:

# Inicializar un entorno con la box obihann/nginx
$ vagrant init obihann/nginx

Levantar la máquina virtual

Ahora que hemos configurado el entorno con la box de Nginx, levantamos la máquina virtual:

# Levantar la máquina
$ vagrant up

Verificar la carpeta compartida

Vagrant crea automáticamente una carpeta compartida en la máquina virtual. Para verificar que esta carpeta existe, ejecutamos el siguiente comando dentro de la máquina virtual:

# Verificar el directorio compartido
$ ls /vagrant

Esta carpeta `/vagrant` está vinculada al directorio en el host donde ejecutaste el comando `vagrant init`.

Configurar la redirección de puertos

La máquina virtual que estamos usando ejecuta un servidor Nginx en el puerto 80. Para poder acceder a este servidor desde el navegador del host, necesitamos redirigir el puerto 80 de la máquina virtual al puerto 8080 de nuestro host. Para hacer esto, editamos el `Vagrantfile` y agregamos la siguiente línea:

config.vm.network "forwarded_port", guest: 80, host: 8080

Esto hará que el servidor Nginx en el puerto 80 de la máquina virtual sea accesible desde el puerto 8080 en tu máquina host.

Recargar la máquina virtual

Después de realizar cambios en el `Vagrantfile`, debemos recargar la máquina virtual para aplicar la configuración:

# Recargar la máquina para aplicar cambios
$ vagrant reload

Añadir un archivo index.html

Para comprobar que la redirección de puertos funciona correctamente, añadimos un archivo `index.html` en el directorio `/www` de la máquina virtual. Este archivo se mostrará cuando accedamos a la dirección `localhost:8080` en el navegador.

# Entrar en la máquina virtual
$ vagrant ssh
# Ir al directorio vagrant/www
$ cd vagrant/www 
# Crear el archivo index.html dentro de la máquina virtual
$ echo '<h1>Bienvenido a Nginx en Vagrant</h1>' > index.html

Ahora, desde el navegador del host, podemos ver el sistema funcionando en la dirección http://localhost:8080/.

Parar y destruir la máquina virtual

Al igual que en el primer ejercicio, es recomendable apagar y destruir la máquina para liberar recursos cuando hayamos terminado de trabajar con ella:

# Apagar la máquina
$ vagrant halt

# Destruir la máquina
$ vagrant destroy