Vagrant
[Actualizado a 8 de julio de 2026]
Vagrant es un software de código abierto que nos permite crear y mantener entornos de desarrollo portables, puede trabajar con VMware, VirtualBox, Hyper-V, KVM, AWS e incluso también con contenedores de Docker, por tanto, es ideal para simplificar la configuración de estos software de virtualización.
En otras palabras, nos permite gestionar máquinas virtuales desde código...
- Buscar y descargar la base
- Generar archivo base con
vagrant init generic/alpine318 - Arrancar la máquina virtual (y generarla si es necesario)
vagrant up - Actualizar la configuración de la máquina
vagrant provisionovagrant up --provision - Detener la máquina
vagrant halt - Eliminar la máquina
vagrant destroy
Trabajo en casa¶
Método de trabajo: Clase invertida
Investigar en la web como generar el archivo Vagrantfile con las características que vamos a desarrollar en clase.
En clase:¶
Hacer los archivos Vagrantfile (7 distintos) que resuelva los siguientes supuestos:
- Añadir una segunda interfaz de red
- Ponerla en modo
bridge - Añadir 2 mv en un sólo fichero
- Conectar esas 2 mv en una red interna
- Limitar el uso de ram a 512MB
- Limitar el uso de cores a 1
- Instalar el paquete
giten una de las mv
Tip: A veces desde el centro puede tardar en devolvernos la terminal, pero en muchas ocasiones estará disponible para el acceso aunque no al 100%.
Boxes¶
Registry iescastelar_com¶
- Ubuntu Desktop 24.04 (actualizado a jun-2026) ➡️
vagrant init iescastelar_com/ubuntu24-desktop --box-version 20260628 - Ubuntu Desktop 26.04 ➡️
- Ubuntu Server 26.04 ➡️
- Alpine Linux 3.24.1 (versión virtual) ➡️
Estas imágenes tienen habilitado el super-usuario grogu para inspección por parte del docente.
Alpine¶
vagrant init generic/alpine318- Tiene un
inity nosystemd - Puede ser recomendable sustituirlo por
minitpara imágenes multi-procesos - Actualizar paquetes
apk updatey el sistema conapk upgrade - Instalar paquetes
apk add apache2 - Docker:
apk add --update docker openrcy luegorc-update add docker boot
Ubuntu¶
- En el Vagrantfile
config.vm.box = "bento/ubuntu-24.04"yconfig.vm.box_version = "202508.03.0"
Configuración¶
Ubicación¶
¿Dónde queremos ubicar la configuración base de vagrant? Los boxes, etc...
En GNU/Linux debemos export VAGRANT_HOME="/home/luis/vagrant" y en Windows con setx VAGRANT_HOME "d:/vagrant_home".
Networking¶
Privada¶
Red en modo NAT o que el GUEST puede acceder al exterior usando la IP del HOST, pero el exterior NO podrá acceder al GUEST, y HOST y GUEST se ven mutauamente:
- Ip estática: config.vm.network "private_network", ip: "192.168.55.10"
- Ip dinámica: config.vm.network "private_network", type: "dhcp"
Pública¶
Red en modo bridge o que el HOST y el GUEST sean iguales en la red:
- Bridge automático: config.vm.network "public_network"
- Bridge manual: config.vm.network "public_network", bridge: "eth0"
Machine-ID¶
Ubuntu - UUID¶
Uno de los problemas que podemos tener al generar varias máquinas partiendo desde el mismo box base es que las mismas pueden tener el mismo uuid (machine-id) por lo que al solicitar ip al servidor DHCP pudiera ser que obtengan la misma IP (no todos los dhcp tienen esta funcionalidad).
Para solucionarlo podemos generar un nuevo uuid por una vez y ya tendríamos suficiente, aunque lo ideal será añadirlo al fichero de provision con lo que nos aseguraremos que será ejecutado cada vez que recreemos la vm.
# Generar nuevo uuid
rm -f /etc/machine-id`
dbus-uuidgen --ensure=/etc/machine-id
# Obtenemos nueva IP del DHCP
dhclient -r eth1
dhclient eth1
ip link set eth1 down
ip link set eth1 up
# Fuente: David G.S. - Alumno de ASIR2 curso 23/24
Referencias:¶
- Manual completo - Friends of Vagrant
- Get Started - Vagrant
- Vagrant Boxes
- Repositorio externo de BOXes
Windows - CMID¶
De forma similar, windows también tiene un número de identificación de máquina cliente (Client Machine ID - CMID) que debe regenerarse si clonamos máquinas.
Para ello debemos ejecutar slmgr /rearm y reiniciar la máquina.
Podemos comprobar el valor actual o nuevo con el comando C:\Windows\System32\slmgr.vbs /dlv
Fuente: learn.microsoft.com
También interesante la preparación del sistema con Sysprep
Tips¶
- Podemos listar las MV de virtualbox con
VBoxManage list vms - Especifidad de configuración según load and merge
- Configurando el nombre amigable
config.vm.hostname = "UbuntuServer22_Vagrant" - Afinando consumos:
Vagrantfile config.vm.provider "virtualbox" do |vb| vb.name = "nombre" vb.memory = "512" vb.cpus = 2 end - Snapshots con:
- Hacerla:
vagrant snapshot save nombre-de-instantanea - Listarlas:
vagrant snapshot list - Recuperarlas:
vagrant snapshot restore nombre-de-instantanea
- Hacerla:
Problemas¶
Sincronización de carpetas¶
Aunque por defecto se comparte el directorio actual de trabajo del HOST con el directorio /vagrant del GUEST (mv), algunos BOXES no lo realizan correctamente y debemos espeficarlo con config.vm.synced_folder ".", "/vagrant"
En ocasiones no es suficiente y debemos indicarle el tipo de sincronización config.vm.synced_folder ".", "/vagrant", type: "rsync" y luego en el HOST lanzar el comando vagrant rsync-auto que volcará una compia del HOST al GUEST.