Creación de una box personalizada con vagrant


Aquí tienes el paso a paso completo para crear tu propia box personalizada con vagrant

Creación de una box personalizada con vagrant
oscar Escrito por oscar 25 April 2025 68 0

Crear una box personalizada con Vagrant es muy útil si quieres tener un entorno preconfigurado que puedas reutilizar o compartir con otros. Aquí tienes el paso a paso completo para crear tu propia box personalizada:

Crear box personalizada
Crear box personalizada

🧰 Requisitos previos

Antes de comenzar, asegúrate de tener instalado en tu máquina:

  • VirtualBox que es el proveedor que usaremos
  • Vagrant para crear la box
  • El ejercicio lo realizaremos creando una box con Ubuntu Server 2205
  • Vamos a trabajar con el Sistema Operativo Windows 10, pero puede servir cualquier SO 

Ademas recomiendo leer:

🪜 Paso a Paso para Crear una Box Personalizada

1️⃣ Crear una máquina virtual base (usando VirtualBox)

Abre VirtualBox y crea una máquina virtual desde cero: explicamos a detalle como se crea en Crear máquina virtual con virtualbox 7

Una vez realizado el paso anterior de crear la maquina virtual, procedemos a instalar ubuntu server como se explica en este post

Resumen de la instalación

Resumen de instalación
Resumen de instalación
  • Asigna un nombre, tipo de sistema (Linux, Ubuntu, etc.)
  • Asigna memoria RAM (ej: 2048 MB)
  • Crea un disco duro virtual (VDI, 20 GB por ejemplo)
  • Instala el sistema operativo manualmente (descarga el ISO desde el sitio oficial, como Ubuntu Server o Debian)

​2️⃣​ Configura la VM

Una vez instalado el sistema operativo dentro de la VM, procedemos a realizar las siguientes configuraciones.

✔️ Crea un usuario llamado vagrant con contraseña vagrant y agrega al usuario vagrant al grupo sudo (o wheel en CentOS)

sudo adduser vagrant
sudo usermod -aG sudo vagrant
id vagrant

Respuesta: uid=1001(vagrant) gid=1001(vagrant) groups=1001(vagrant),27(sudo)

✔️ Luego configura sudo sin contraseña:

echo "vagrant ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/vagrant

✔️ Instala SSH (si no está instalado) y habilita el servicio SSH:

sudo apt install openssh-server
sudo systemctl enable ssh

3️⃣​ Agregar la clave pública de Vagrant

Vagrant usa una clave pública estándar. Ejecuta estando en el usuario vagrant:

mkdir -p /home/vagrant/.ssh

mkdir -p /home/vagrant/.ssh: crea el directorio .ssh si no existe.

curl -fsSL https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub -o /home/vagrant/.ssh/authorized_keys

 curl -fsSL ... -o ...: descarga la clave pública de Vagrant y la guarda como authorized_keys.

chown -R vagrant:vagrant /home/vagrant/.ssh

chown -R vagrant:vagrant ...: cambia el dueño del directorio .ssh y su contenido al usuario vagrant.

chmod 700 /home/vagrant/.ssh

chmod 700 ...: permisos seguros para el directorio .ssh.

chmod 600 /home/vagrant/.ssh/authorized_keys

chmod 600 ...: permisos seguros para el archivo de claves.

4️⃣​ Instalar VirtualBox Guest Additions (opcional pero recomendado)

Esto permite una mejor integración con VirtualBox (sincronización de carpetas, portapapeles, etc.)

sudo apt install build-essential dkms linux-headers-$(uname -r) 
# Luego inserta el CD de Guest Additions en VirtualBox y ejecútalo desde la VM

5️⃣​ Limpieza antes de empaquetar

Limpia archivos temporales, cachés, logs, etc. para reducir el tamaño de la box:

sudo apt clean && sudo rm -rf /tmp/*

6️⃣​ Empaquetar la box con Vagrant

Una vez que todo esté listo, apaga la VM desde VirtualBox (no uses "guardar estado"). Recuerda ubicarte en un directorio en donde quieres que se guarde la box que vamos a crear, en mi caso, vamos a ubicarnos c:/code o /home/code

Luego, abre tu terminal y ejecuta:

vagrant package --base NOMBRE_VM_VIRTUALBOX --output mi_box_custom.box

Reemplaza NOMBRE_VM_VIRTUALBOX con el nombre que le diste a la VM.

box creada
box creada

7️⃣​​ Agregar la box al entorno de Vagrant

Ahora puedes usar esta box personalizada localmente:

vagrant box add mi_box_custom mi_box_custom.box
Añadimos la box
Añadimos la box

​8️⃣ Usar la box en un Vagrantfile

Crea una carpeta nueva y dentro:

vagrant init mi_box_custom

Respuesta

c:\code\vagrant>vagrant init mi_box_custom
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Luego:

vagrant up

Respuesta

c:\code\vagrant>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'mi_box_custom'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_default_1750009019932_92545
==> default: Clearing any previously set network interfaces...

Luego realizamos un vagrant ssh

c:\code\vagrant>vagrant ssh
Welcome to Ubuntu 25.04 (GNU/Linux 6.14.0-15-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
vagrant@ubuntu:~$

¡Listo! Ya estás corriendo tu propia box personalizada.


Comentario

Debe aceptar antes de enviar