Vagrant.configure("2") do |config| # Disable default synced folder config.vm.synced_folder ".", "/vagrant", disabled: true # DMZ - Traefik Reverse Proxy config.vm.define "dmz" do |dmz| dmz.vm.box = "debian/bookworm64" dmz.vm.hostname = "dmz" dmz.vm.network "private_network", ip: "192.168.56.10" dmz.vm.network "forwarded_port", guest: 80, host: 8080 dmz.vm.network "forwarded_port", guest: 443, host: 8443 # Libvirt provider - much better performance than virtualbox dmz.vm.provider "libvirt" do |lv| lv.memory = 2048 lv.cpus = 2 end # Provision dependencies dmz.vm.provision "shell", inline: <<-SHELL # Update system apt-get update apt-get install -y sudo python3 ca-certificates curl gnupg SHELL end # Backend - Container Host config.vm.define "backend" do |backend| backend.vm.box = "debian/bookworm64" backend.vm.hostname = "backend" backend.vm.network "private_network", ip: "192.168.56.11" # Libvirt provider - much better performance than virtualbox backend.vm.provider "libvirt" do |lv| lv.memory = 2048 lv.cpus = 2 end # Provision dependencies backend.vm.provision "shell", inline: <<-SHELL # Update system apt-get update apt-get install -y sudo python3 ca-certificates curl gnupg SHELL end # Backend2 - Second smaller Container Host for testing config.vm.define "backend2" do |backend2| backend2.vm.box = "debian/bookworm64" backend2.vm.hostname = "backend2" backend2.vm.network "private_network", ip: "192.168.56.12" backend2.vm.provider "libvirt" do |lv| lv.memory = 1024 lv.cpus = 1 end # Provision dependencies backend2.vm.provision "shell", inline: <<-SHELL # Update system apt-get update apt-get install -y sudo python3 ca-certificates curl gnupg SHELL # Provision all VMs with Ansible after the last VM is up backend2.vm.provision "ansible" do |ansible| ansible.limit = "all" ansible.playbook = "playbooks/site.yml" ansible.inventory_path = "inventories/vagrant" ansible.verbose = "v" end end end