summaryrefslogtreecommitdiffstats
path: root/roles/ands_vagrant_vm/templates/Vagrantfile.j2
blob: 386ba85bf9e2a13c3f4397e9346a3d981c7cefb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- mode: ruby -*-
# vi: set ft=ruby :
{% set net = ands_openshift_network | ipaddr('network') | ipaddr(0) | regex_replace('\.\d+$', '')  %}
{% set storage_net = ands_storage_network | ipaddr('network') | ipaddr(0) | regex_replace('\.\d+$', '') %}
{% set public_net = ands_openshift_public_network | ipaddr('network') | ipaddr(0) | regex_replace('\.\d+$', '') %}
{% set netid = (  net | regex_replace('^.*\.', '') ) %}
{% set storage_netid = (  storage_net | regex_replace('^.*\.', '') ) %}
{% set public_netid = (  public_net | regex_replace('^.*\.', '') ) %}
{% set macid = ( (netid | length) > 2 ) | ternary(netid, "0" ~ netid) %}

Vagrant.configure("2") do |config|
  (1..{{ vagrant_hosts }}).each do |i|
    config.vm.define "{{ vagrant_hostname_template }}#{i}" do |node|
        node.vm.network "public_network", nm_controlled: "yes", bridge: "br0", mac: "080027{{ macid  }}02#{i}", ip: "{{ public_net }}.#{i}", type: "dhcp"
        node.vm.network "private_network", nm_controlled: "yes",  mac: "080027{{ macid }}12#{i}", ip: "{{ net }}.#{i}", name: "vboxnet0", type: "static"
        node.vm.box = "centos/7"
        node.disksize.size = "80 GB"
        node.vm.hostname = "{{ vagrant_hostname_template }}#{i}.ipe.kit.edu"
#	node.vm.synced_folder "../data", "/root/data"

# Configuring DHCP in 'vm.network' causes 2 DHCP clients (dhclinet & nm) running in parallel and getting 2 IPs.
#        node.vm.provision "shell", run: "always", inline: "( ip addr show dev eth1 | grep -v 141.52.64.15 | grep -v 141.52.64.17 | grep -v 141.52.64.28 | grep 141.52 ) || dhclient -cf /var/lib/NetworkManager/dhclient-eth0.conf eth1"
        node.vm.provision "shell", run: "always", inline: "( ip addr show dev eth1 | grep {{ public_netid }}.#{i} ) || ip addr add 192.168.{{ public_netid }}.#{i}/24 dev eth1"

        node.vm.provision "shell", run: "always", inline: "( ip addr show dev eth2 | grep {{ storage_netid }}.#{i} ) || ip addr add 192.168.{{ storage_netid }}.#{i}/24 dev eth2"
        node.vm.provision "shell", run: "always", inline: "( ip addr show dev eth2 | grep {{ netid }}.#{i} ) || ip addr add 192.168.{{ netid }}.#{i}/24 dev eth2"
        node.vm.provision "shell", run: "always", inline: "chmod +r /etc/sysconfig/network-scripts/ifcfg-eth*"
        node.vm.provision "shell", run: "always", inline: "chcon --reference /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth*"
#        node.vm.provision "shell", run: "always", inline: "nmcli con down 'System eth0'; nmcli con up 'System eth0'"
        node.vm.provision "shell", run: "always", inline: "ip route del default dev eth0 &> /dev/null ; error=$?"
        node.vm.provision "shell", run: "always", inline: "DEVICE_IFACE=eth1 /etc/NetworkManager/dispatcher.d/99-origin-dns.sh eth1 up &> /dev/null; error=$?"
        
        node.vm.provision "shell" do |s|
            ssh_pub_key = File.readlines("authorized_keys").first.strip
            s.inline = <<-SHELL
                mkdir -p /root/.ssh/
                echo #{ssh_pub_key} >> /root/.ssh/authorized_keys
            SHELL
        end

        node.vm.provider "virtualbox" do |vb|
            vb.memory = "{{ 1024 * (vagrant_mem_size | int) }}"
            vb.cpus = {{ vagrant_cpu_cores }}
            #vb.gui = true
            vb.customize [
                "modifyvm", :id,
                "--natnet1", "192.168.23#{i}/24",
#               "--ostype", "Linux_64",
                "--audio", "none",
            ]
            unless File.exist?("../disks/#{i}.vdi")
              vb.customize [
        	'createhd', '--filename', "../disks/#{i}", '--format', 'VDI', '--size', {{ 1024 * (vagrant_disk_size | int) }}
              ]
              vb.customize [
        	'storageattach', :id, '--storagectl', 'IDE Controller', '--port', 1, '--device', 0,'--type', 'hdd', '--medium', "../disks/#{i}.vdi"
# Since VirtualBox 5.1
#        	'storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0,'--type', 'hdd', '--medium', "../disks/#{i}.vdi"
              ]
            end
        end
    end
  end
end