# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # Global configuration config.vm.box = "debian/bookworm64" config.vm.box_version = ">= 12.12.0" # Disable automatic box update checking config.vm.box_check_update = false # Configure SSH config.ssh.insert_key = true # Configure shared folders config.vm.synced_folder ".", "/vagrant", disabled: true # Configure provider-specific settings config.vm.provider "virtualbox" do |vb| vb.name = "bare-bones-cluster" vb.memory = "512" vb.cpus = 1 vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] end # Configure libvirt provider config.vm.provider "libvirt" do |libvirt| libvirt.memory = 512 libvirt.cpus = 1 libvirt.driver = "kvm" libvirt.connect_via_ssh = false end # Swarm Manager config.vm.define "swarm-manager" do |manager| manager.vm.hostname = "swarm-manager" manager.vm.network "private_network", ip: "192.168.56.10" # Port forwarding for Docker Swarm services manager.vm.network "forwarded_port", guest: 9000, host: 19000, id: "portainer" manager.vm.network "forwarded_port", guest: 8080, host: 18080, id: "traefik" manager.vm.network "forwarded_port", guest: 80, host: 18081, id: "webapp" manager.vm.provider "virtualbox" do |vb| vb.name = "swarm-manager" vb.memory = "512" vb.cpus = 1 end manager.vm.provider "libvirt" do |libvirt| libvirt.memory = 512 libvirt.cpus = 1 end end # Swarm Worker 1 config.vm.define "swarm-worker1" do |worker1| worker1.vm.hostname = "swarm-worker1" worker1.vm.network "private_network", ip: "192.168.56.11" worker1.vm.provider "virtualbox" do |vb| vb.name = "swarm-worker1" vb.memory = "512" vb.cpus = 1 end worker1.vm.provider "libvirt" do |libvirt| libvirt.memory = 512 libvirt.cpus = 1 end end # Swarm Worker 2 config.vm.define "swarm-worker2" do |worker2| worker2.vm.hostname = "swarm-worker2" worker2.vm.network "private_network", ip: "192.168.56.12" worker2.vm.provider "virtualbox" do |vb| vb.name = "swarm-worker2" vb.memory = "512" vb.cpus = 1 end worker2.vm.provider "libvirt" do |libvirt| libvirt.memory = 512 libvirt.cpus = 1 end end # Swarm Worker 3 config.vm.define "swarm-worker3" do |worker3| worker3.vm.hostname = "swarm-worker3" worker3.vm.network "private_network", ip: "192.168.56.13" worker3.vm.provider "virtualbox" do |vb| vb.name = "swarm-worker3" vb.memory = "512" vb.cpus = 1 end worker3.vm.provider "libvirt" do |libvirt| libvirt.memory = 512 libvirt.cpus = 1 end end end