# -*- 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. Vagrant.configure("2") do |config| config.vbguest.auto_update = false # 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: "192.168.56.10" ws.vm.provider "virtualbox" do |vb| vb.memory = "1024" # Less memory needed for control node vb.cpus = 1 end ws.vm.provision "shell", inline: <<-SHELL sudo apt-get update sudo apt-get install -y software-properties-common sudo apt-add-repository --yes --update ppa:ansible/ansible sudo apt-get install -y ansible git vim # Set up ansible environment for vagrant user sudo -u vagrant mkdir -p /home/vagrant/.ansible sudo -u vagrant touch /home/vagrant/.ansible/ansible.cfg # Create workspace and SSH directories sudo -u vagrant mkdir -p /home/vagrant/ansible sudo -u vagrant mkdir -p /home/vagrant/.ssh sudo chmod 700 /home/vagrant/.ssh # Copy the Vagrant private keys (these will be synced by Vagrant) for i in {1..3}; do sudo -u vagrant cp /vagrant/.vagrant/machines/vm$i/virtualbox/private_key /home/vagrant/.ssh/vm${i}_key sudo chmod 600 /home/vagrant/.ssh/vm${i}_key done # Disable host key checking for easier learning echo "[defaults]" > /home/vagrant/.ansible/ansible.cfg echo "host_key_checking = False" >> /home/vagrant/.ansible/ansible.cfg SHELL end # VM 1 Configuration config.vm.define "vm1" do |vm1| vm1.vm.box = "ubuntu/jammy64" # Fixed private network IP vm1.vm.network "private_network", ip: "192.168.56.80" # Public network for external access vm1.vm.network "public_network", bridge: "wlp0s20f3" 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" # Fixed private network IP vm2.vm.network "private_network", ip: "192.168.56.81" # Public network for external access vm2.vm.network "public_network", bridge: "wlp0s20f3" 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" # Fixed private network IP vm3.vm.network "private_network", ip: "192.168.56.82" # Public network for external access vm3.vm.network "public_network", bridge: "wlp0s20f3" 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 end