Configuración de múltiples máquinas en un solo Vagrantfile
Configuración de múltiples máquinas en un solo Vagrantfile por medio de config.vm.define

Vagrant permite definir múltiples máquinas en un solo Vagrantfile
, lo que es ideal para simular redes, arquitecturas cliente-servidor, clústeres, etc.
🛠️Crear un proyecto
Procedemos a crear un proyecto en vagrant como lo explico en primeros pasos con vagrant, creamos un directorio llamado proyecto-vagrant
y ejecutamos:
vagrant init
Esto creara en el directorio el archivo proyecto-vagrant
vagrantfile el cual vamos a agregar el box "ubuntu/bionic64" de momento, nos deberá quedar de la siguiente forma:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
end
Iniciamos vagrant
vagrant up
Vemos que ha creado la maquina virtual en virtualbox y vemos que por defecto a dejado las siguientes caracteristicas en esta máquina virtual.
⚙️ ¿Cómo configurar múltiples máquinas en un solo Vagrantfile
?
Se hace usando el método config.vm.define
dentro del Vagrantfile
. Cada máquina tiene su propia configuración aislada.

🧱 Ejemplo básico de múltiples máquinas
Vamos a modificar el archivo vagrantfile creado en el ejemplo del proyecto inicial, donde vamos a colocar el siguiente código:
Vagrant.configure("2") do |config|
config.vm.define "web" do |web|
web.vm.box = "hashicorp/bionic64"
web.vm.hostname = "webserver"
web.vm.network "private_network", ip: "192.168.56.10"
end
config.vm.define "db" do |db|
db.vm.box = "hashicorp/bionic64"
db.vm.hostname = "database"
db.vm.network "private_network", ip: "192.168.56.11"
end
end
🧩 ¿Qué pasa aquí?
config.vm.define "nombre"
define una máquina llamada"nombre"
.- Dentro de cada bloque (
web
,db
) puedes hacer configuraciones individuales:- Asignar diferente box
- Configurar IPs privadas
- Asignar hostname
- Provisionar (instalar software automáticamente)
🎯 ¿Cómo levantar las máquinas?
Levantar todas las máquinas:
vagrant up
Levantar solo una máquina:
vagrant up web
Conectar vía SSH a una máquina específica:
vagrant ssh db
🛠️ Ejemplo avanzado (con aprovisionamiento)
Supongamos que quieres que una máquina instale Apache automáticamente:
Vagrant.configure("2") do |config|
config.vm.define "web" do |web|
web.vm.box = "hashicorp/bionic64"
web.vm.network "private_network", ip: "192.168.56.10"
web.vm.provision "shell", inline: <<-SHELL sudo apt update sudo apt install -y apache2 SHELL
end
config.vm.define "db" do |db|
db.vm.box = "hashicorp/bionic64"
db.vm.network "private_network", ip: "192.168.56.11"
db.vm.provision "shell", inline: <<-SHELL sudo apt update sudo apt install -y mysql-server SHELL
end
end
👉 Así cuando haces vagrant up
, automáticamente tendrás un servidor web y una base de datos configurados.
⚡ Resumen rápido
Comando | Función |
---|---|
vagrant up |
Levanta todas las máquinas |
vagrant up nombre |
Levanta solo una |
vagrant ssh nombre |
Conecta por SSH a una |
vagrant halt |
Apaga todas |
vagrant halt nombre |
Apaga una específica |