# -*- mode: ruby -*-
# -*- coding: utf-8 -*-

vm_memory = 2 * 1024
vm_cpus = 1

cluster = [
  { name: 'master', hostname: 'master', ip: '172.17.0.100' },
  { name: 'worker', hostname: 'worker', ip: '172.17.0.101' }
]

Vagrant.configure('2') do |config|
  cluster.each do |node|
    config.vm.define node[:name] do |config|
      config.vm.box = "generic/ubuntu1604"
      config.vm.hostname = node[:hostname]

      config.vm.provider :virtualbox do |v|
        v.name = node[:name]
        v.memory = vm_memory
        v.cpus = vm_cpus
      end

      config.vm.provider :libvirt do |v|
        v.memory = vm_memory
        v.cpus = vm_cpus
      end

      config.vm.network :private_network, ip: node[:ip]

      if node[:name] == 'master'
        config.vm.network "forwarded_port", guest: 8080, host: 8080
        config.vm.provision :shell, path: "../tools/imported/openstack-rancher.sh"
        config.vm.provision :shell, path: "../tools/get_ranchercli.sh"
      end

      if node[:name] == 'worker'
        config.vm.provision :shell, path: "../tools/imported/openstack-k8s-node.sh"
      end
    end
  end
end
