# NETWORK_INTERFACE = "en5: USB 10/100/1000 LAN"

Vagrant.configure("2") do |config|
  config.vm.provision :shell, privileged: true, path: "./init/init_common.sh"

  config.vm.box = "ubuntu/focal64"

  N = 4
  (0..N).each do |i|
    config.vm.define "n#{i + 1}" do |node|
      node.vm.hostname = "n#{i + 1}"
      # node.vm.network :public_network, bridge: NETWORK_INTERFACE
      node.vm.network "private_network", ip: "192.168.51.10#{i + 1}"
      node.vm.provider :virtualbox do |vb|
        if i < 3
          vb.memory = 1400
        else
          vb.memory = 1400
        end
        vb.cpus = 1
      end
    end

    config.vm.provision "shell" do |s|
      ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
      s.inline = <<-SHELL
        echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
        echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
      SHELL
    end
  end

  config.vm.provision :shell, privileged: false, path: "./init/set_users.sh"
end
