-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVagrantfile
100 lines (91 loc) · 4.68 KB
/
Vagrantfile
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Requirements
require './lib/calculator'
require './lib/hostsgenerator'
require './lib/config_renderer'
base_dir = File.expand_path(File.dirname(__FILE__))
conf = read_yml_file(YAML.load_file(File.join(base_dir, "cluster.yml")))
gen_bird_template(conf)
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.memory = conf[:vm_mem]
vb.cpus = conf[:vm_cpus]
end
(1..2).each do |i|
config.vm.define "nfs#{i}" do |config|
config.vm.network "private_network", ip: "#{conf[:ip_nfs][i - 1]}", netmask: "255.255.255.252", virtualbox__intnet: "intservicenet"
config.vm.hostname = "nfs#{i}"
config.vm.box="centos6"
config.vm.provision "shell", path: "./scripts/provision_ssh.sh"
config.vm.provision "shell", path: "./scripts/provision_hostsfile.sh"
config.vm.provision "shell", path: "./scripts/provision_bird.sh"
config.vm.provision "shell", path: "./scripts/provision_nfs_server.sh"
end
end
(1..2).each_with_index do |i, index|
config.vm.define "login#{i}" do |config|
config.vm.network "private_network", ip: "#{conf[:ip_login][i - 1]}", netmask: "255.255.255.252", virtualbox__intnet: "intservicenet"
config.vm.hostname = "login#{i}"
config.vm.box="centos6"
config.vm.provision "shell", path: "./scripts/provision_ssh.sh"
config.vm.provision "shell", path: "./scripts/provision_hostsfile.sh"
config.vm.provision "shell", path: "./scripts/provision_bird.sh"
end
end
nodes = 27
base = (nodes**(1.0/3.0)).round
servicecon_nfs = 0
servicecon_login = 0
if base**3 == nodes
addresses = calculateIPs(3)
writeIPout(addresses)
generate_hostsfile(addresses, conf)
nfsnodes = conf[:nodes_nfs].map(&:to_i)
loginnodes = conf[:nodes_login].map(&:to_i)
(1..nodes).each do |i|
config.vm.define "node#{i}" do |config|
index = (i - 1) * 6
config.vm.network "private_network", ip: "#{addresses[(index+0)]}", netmask: "255.255.255.252", virtualbox__intnet: "inthpcnet"
config.vm.network "private_network", ip: "#{addresses[(index+1)]}", netmask: "255.255.255.252", virtualbox__intnet: "inthpcnet"
config.vm.network "private_network", ip: "#{addresses[(index+2)]}", netmask: "255.255.255.252", virtualbox__intnet: "inthpcnet"
config.vm.network "private_network", ip: "#{addresses[(index+3)]}", netmask: "255.255.255.252", virtualbox__intnet: "inthpcnet"
config.vm.network "private_network", ip: "#{addresses[(index+4)]}", netmask: "255.255.255.252", virtualbox__intnet: "inthpcnet"
config.vm.network "private_network", ip: "#{addresses[(index+5)]}", netmask: "255.255.255.252", virtualbox__intnet: "inthpcnet"
if i == nfsnodes[0] || i == nfsnodes[1]
config.vm.network "private_network", ip: "#{conf[:ip_nfs][servicecon_nfs]}".gsub(".0.1",".0.2"), netmask: "255.255.255.252", virtualbox__intnet: "intservicenet"
servicecon_nfs = servicecon_nfs + 1
end
if i == loginnodes[0] || i == loginnodes[1]
config.vm.network "private_network", ip: "#{conf[:ip_login][servicecon_login]}".gsub(".0.1",".0.2"), netmask: "255.255.255.252", virtualbox__intnet: "intservicenet"
servicecon_login = servicecon_login + 1
end
if i == conf[:nodes_master][0]
config.vm.network "private_network", ip: "#{conf[:ip_master][0]}".gsub(".0.1",".0.2"), netmask: "255.255.255.252", virtualbox__intnet: "intservicenet"#
end
config.vm.hostname = "node#{i}"
config.vm.box="centos6"
config.vm.provision "shell", path: "./scripts/provision_ssh.sh"
config.vm.provision "shell", path: "./scripts/provision_hostsfile.sh"
config.vm.provision "shell", path: "./scripts/provision_bird.sh"
end
end
else
STDERR.puts("ERROR: Your count of nodes hast to be an x^3 value! And was: " + base.to_s + "")
end
nfsclients = gen_install_template()
config.vm.define "master1" do |config|
config.vm.network "private_network", ip: "#{conf[:ip_master][0]}", netmask: "255.255.255.252", virtualbox__intnet: "intservicenet"
config.vm.hostname = "master1"
config.vm.box="centos6"
config.vm.provision "shell", path: "./scripts/provision_ssh.sh"
config.vm.provision "shell", path: "./scripts/provision_hostsfile.sh"
config.vm.provision "shell", path: "./scripts/provision_bird.sh"
config.vm.provision "shell", path: "./scripts/provision_nfs_clients.sh", args: nfsclients
config.vm.provision "shell", path: "./scripts/provision_openmpi.sh"
config.vm.provision "shell", path: "./scripts/provision_univa_grid_engine.sh"
end
end