Skip to content

Instantly share code, notes, and snippets.

@nullx5
Last active June 13, 2025 01:09
Show Gist options
  • Save nullx5/7a50302f67669b3dc95bc5aedbe19640 to your computer and use it in GitHub Desktop.
Save nullx5/7a50302f67669b3dc95bc5aedbe19640 to your computer and use it in GitHub Desktop.

Cluster vagrant

Vagrant se puede tener varias boxes corriendo, por ejemplo:

  • backend
  • frontend
  • database

Aquí un ejemplo de Vagrantfile

# Vagrantfile para desplegar backend, frontend y base de datos
Vagrant.configure("2") do |config|
  # Box base
  BOX_NAME = "ubuntu/jammy64"

  # Configuración común
  config.vm.synced_folder ".", "/vagrant", disabled: true

  # Backend
  config.vm.define "backend" do |backend|
    backend.vm.box = BOX_NAME
    backend.vm.hostname = "backend.local"
    backend.vm.network "private_network", ip: "192.168.33.10"
    backend.vm.provider "virtualbox" do |vb|
      vb.name = "vagrant-backend"
      vb.memory = 1024
      vb.cpus = 2
    end
    backend.vm.provision "shell", inline: <<-SHELL
      echo "Instalando backend..."
      sudo apt-get update
      sudo apt-get install -y python3 python3-pip
      pip3 install flask
    SHELL
  end

  # Frontend
  config.vm.define "frontend" do |frontend|
    frontend.vm.box = BOX_NAME
    frontend.vm.hostname = "frontend.local"
    frontend.vm.network "private_network", ip: "192.168.33.11"
    frontend.vm.provider "virtualbox" do |vb|
      vb.name = "vagrant-frontend"
      vb.memory = 1024
      vb.cpus = 2
    end
    frontend.vm.provision "shell", inline: <<-SHELL
      echo "Instalando frontend..."
      sudo apt-get update
      sudo apt-get install -y nginx
    SHELL
  end

  # Base de datos
  config.vm.define "database" do |db|
    db.vm.box = BOX_NAME
    db.vm.hostname = "db.local"
    db.vm.network "private_network", ip: "192.168.33.12"
    db.vm.provider "virtualbox" do |vb|
      vb.name = "vagrant-db"
      vb.memory = 1024
      vb.cpus = 2
    end
    db.vm.provision "shell", inline: <<-SHELL
      echo "Instalando base de datos..."
      sudo apt-get update
      sudo apt-get install -y mysql-server
      sudo systemctl enable mysql
    SHELL
  end
end

Luego puedes acceder a cada box con:

vagrant ssh backend
vagrant ssh frontend
vagrant ssh database

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment