# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  # Base VM OS configuration.
  config.vm.box = "debian/bullseye64"
  config.ssh.insert_key = false
  config.vm.synced_folder '.', '/vagrant', disabled: true

  # General VirtualBox VM configuration.
  config.vm.provider :virtualbox do |v|
    v.memory = 512
    v.cpus = 1
    v.linked_clone = true
    v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    v.customize ["modifyvm", :id, "--ioapic", "on"]
  end

  # srv1 master.
  config.vm.define "srv1" do |srv1|
    srv1.vm.hostname = "srv1"
    srv1.vm.network :private_network, ip: "192.168.56.10"
    srv1.vm.provision "shell",
      inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
    srv1.vm.provision "shell", path: "provision/setup-master.sh"
  end


  # srv2 slave.
  config.vm.define "srv2" do |srv2|
    srv2.vm.hostname = "srv2"
    srv2.vm.network :private_network, ip: "192.168.56.11"
    srv2.vm.provision "shell",
      inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
    srv2.vm.provision "shell", path: "provision/setup-slave.sh"
  end

  # cli.
  config.vm.define "cli" do |cli|
    cli.vm.hostname = "cli"
    cli.vm.network :private_network, ip: "192.168.56.30"
    cli.vm.provider :virtualbox do |v|
      v.customize ["modifyvm", :id, "--memory", 512]
    end
    cli.vm.provision "shell",
      inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
    cli.vm.provision "ansible" do |ansible|
      ansible.playbook = "provision/setup-cli.sh"
    end
  end

end