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

c3n1Vdi = '../../tmp/c3-n1.vdi'
c3n2Vdi = '../../tmp/c3-n2.vdi'
c3n3Vdi = '../../tmp/c3-n3.vdi'

Vagrant.configure("2") do |config|
  # https://docs.vagrantup.com.

  # boxes at https://vagrantcloud.com/search.
  #config.vm.box = "debian/stretch64"
  config.vm.box = "debian/buster64"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  # config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine and only allow access
  # via 127.0.0.1 to disable public access
  # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.11.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  config.vm.provider "virtualbox" do |vb|
    vb.gui = false
    vb.memory = "2048"
    vb.cpus = "1"
  end

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
  SHELL

  config.vm.define "c3-n1" do |machine|
    machine.vm.hostname = "c3-n1"
    machine.vm.network "private_network", ip: "192.168.11.31"
    machine.vm.provider "virtualbox" do |vbm|
      unless File.exist?(c3n1Vdi)
        vbm.customize ['createhd', '--filename', c3n1Vdi, '--variant', 'Fixed', '--size', 5 * 1024]
      end
      vbm.customize ['storageattach', :id,  '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', c3n1Vdi]
    end
  end

  config.vm.define "c3-n2" do |machine|
    machine.vm.hostname = "c3-n2"
    machine.vm.network "private_network", ip: "192.168.11.32"
    machine.vm.provider "virtualbox" do |vbm|
      unless File.exist?(c3n2Vdi)
        vbm.customize ['createhd', '--filename', c3n2Vdi, '--variant', 'Fixed', '--size', 5 * 1024]
      end
      vbm.customize ['storageattach', :id,  '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', c3n2Vdi]
    end
  end

  config.vm.define "c3-n3" do |machine|
    machine.vm.hostname = "c3-n3"
    machine.vm.network "private_network", ip: "192.168.11.33"
    machine.vm.provider "virtualbox" do |vbm|
      unless File.exist?(c3n3Vdi)
        vbm.customize ['createhd', '--filename', c3n3Vdi, '--variant', 'Fixed', '--size', 5 * 1024]
      end
      vbm.customize ['storageattach', :id,  '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', c3n3Vdi]
    end
  end

end
