# -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. # Load default values if environment variables are not set vm1_ip = ENV['VM1_IP'] || "192.168.56.80" vm2_ip = ENV['VM2_IP'] || "192.168.56.81" vm3_ip = ENV['VM3_IP'] || "192.168.56.82" workstation_ip = ENV['WORKSTATION_IP'] || "192.168.56.10" Vagrant.configure("2") do |config| if defined?(VagrantVbguest) config.vbguest.auto_update = false end # VM 1 Configuration config.vm.define "vm1" do |vm1| vm1.vm.box = "ubuntu/jammy64" vm1.vm.hostname = "vm1" # Fixed private network IP vm1.vm.network "private_network", ip: vm1_ip # Public network for external access if ENV['VAGRANT_BRIDGE'] vm1.vm.network "public_network", bridge: ENV['VAGRANT_BRIDGE'] else vm1.vm.network "public_network" end vm1.vm.provider "virtualbox" do |vb| vb.memory = "2048" # 2GB memory vb.cpus = 2 end vm1.vm.provision "shell", inline: <<-SHELL sudo apt-get update sudo apt-get install -y software-properties-common python3-pip python3-apt jq # python3 -m pip install --upgrade pip SHELL end # VM 2 Configuration config.vm.define "vm2" do |vm2| vm2.vm.box = "ubuntu/jammy64" vm2.vm.hostname = "vm2" # Fixed private network IP vm2.vm.network "private_network", ip: vm2_ip # Public network for external access if ENV['VAGRANT_BRIDGE'] vm2.vm.network "public_network", bridge: ENV['VAGRANT_BRIDGE'] else vm2.vm.network "public_network" end vm2.vm.provider "virtualbox" do |vb| vb.memory = "2048" # 2GB memory vb.cpus = 2 end vm2.vm.provision "shell", inline: <<-SHELL sudo apt-get update sudo apt-get install -y software-properties-common python3-pip python3-apt jq # python3 -m pip install --upgrade pip SHELL end # VM 3 Configuration config.vm.define "vm3" do |vm3| vm3.vm.box = "ubuntu/jammy64" vm3.vm.hostname = "vm3" # Fixed private network IP vm3.vm.network "private_network", ip: vm3_ip # Public network for external access if ENV['VAGRANT_BRIDGE'] vm3.vm.network "public_network", bridge: ENV['VAGRANT_BRIDGE'] else vm3.vm.network "public_network" end vm3.vm.provider "virtualbox" do |vb| vb.memory = "2048" # 2GB memory vb.cpus = 2 end vm3.vm.provision "shell", inline: <<-SHELL sudo apt-get update sudo apt-get install -y software-properties-common python3-pip python3-apt jq # python3 -m pip install --upgrade pip SHELL end # Ansible Controller/Workstation Configuration config.vm.define "workstation" do |ws| ws.vm.box = "ubuntu/jammy64" ws.vm.hostname = "ansible-workstation" ws.vm.synced_folder ".", "/vagrant" # Fixed private network IP ws.vm.network "private_network", ip: workstation_ip ws.vm.provider "virtualbox" do |vb| vb.memory = "1024" # Less memory needed for control node vb.cpus = 1 end ws.vm.provision "shell", path: "ansible/provision_workstation.sh" end end