|
| 1 | +# -*- mode: ruby -*- |
| 2 | +# vi: set ft=ruby : |
| 3 | + |
| 4 | +require "yaml" |
| 5 | +settings = YAML.load_file "yaml/settings.yaml" |
| 6 | + |
| 7 | +workers = settings["nodes"]["workers"]["count"] |
| 8 | +loxilbs = (ENV['LOXILBS'] || "2").to_i |
| 9 | + |
| 10 | +Vagrant.configure("2") do |config| |
| 11 | + |
| 12 | + if Vagrant.has_plugin?("vagrant-vbguest") |
| 13 | + config.vbguest.auto_update = false |
| 14 | + end |
| 15 | + config.vm.define "host" do |host| |
| 16 | + host.vm.hostname = 'host' |
| 17 | + host.vm.box = settings["software"]["cluster"]["box"] |
| 18 | + host.vm.network :private_network, ip: "192.168.80.9", :netmask => "255.255.255.0" |
| 19 | + host.vm.provision :shell, :path => "node_scripts/host.sh" |
| 20 | + host.vm.provider :virtualbox do |vbox| |
| 21 | + vbox.customize ["modifyvm", :id, "--memory", 2048] |
| 22 | + vbox.customize ["modifyvm", :id, "--cpus", 2] |
| 23 | + end |
| 24 | + end |
| 25 | + |
| 26 | + |
| 27 | + |
| 28 | + (1..loxilbs).each do |node_number| |
| 29 | + config.vm.define "llb#{node_number}" do |loxilb| |
| 30 | + loxilb.vm.box = settings["software"]["loxilb"]["box"]["name"] |
| 31 | + loxilb.vm.box_version = settings["software"]["loxilb"]["box"]["version"] |
| 32 | + loxilb.vm.hostname = "llb#{node_number}" |
| 33 | + ip = node_number + 251 |
| 34 | + loxilb.vm.network :private_network, ip: "192.168.80.#{ip}", :netmask => "255.255.255.0" |
| 35 | + loxilb.vm.provision :shell, :path => "node_scripts/loxilb#{node_number}.sh" |
| 36 | + loxilb.vm.provider :virtualbox do |vbox| |
| 37 | + vbox.customize ["modifyvm", :id, "--memory", 6000] |
| 38 | + vbox.customize ["modifyvm", :id, "--cpus", 4] |
| 39 | + vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] |
| 40 | + end |
| 41 | + end |
| 42 | + end |
| 43 | + |
| 44 | + config.vm.define "master" do |master| |
| 45 | + master.vm.box = settings["software"]["cluster"]["box"] |
| 46 | + master.vm.hostname = 'master' |
| 47 | + master.vm.network :private_network, ip: settings["network"]["control_ip"], :netmask => "255.255.255.0" |
| 48 | + master.vm.provision "shell", |
| 49 | + env: { |
| 50 | + "DNS_SERVERS" => settings["network"]["dns_servers"].join(" "), |
| 51 | + "ENVIRONMENT" => settings["environment"], |
| 52 | + "KUBERNETES_VERSION" => settings["software"]["kubernetes"], |
| 53 | + "OS" => settings["software"]["os"] |
| 54 | + }, |
| 55 | + path: "node_scripts/common.sh" |
| 56 | + master.vm.provision "shell", |
| 57 | + env: { |
| 58 | + "CALICO_VERSION" => settings["software"]["calico"], |
| 59 | + "CONTROL_IP" => settings["network"]["control_ip"], |
| 60 | + "POD_CIDR" => settings["network"]["pod_cidr"], |
| 61 | + "SERVICE_CIDR" => settings["network"]["service_cidr"] |
| 62 | + }, |
| 63 | + path: "node_scripts/master.sh" |
| 64 | + |
| 65 | + master.vm.provider :virtualbox do |vbox| |
| 66 | + vbox.customize ["modifyvm", :id, "--memory", 4096] |
| 67 | + vbox.customize ["modifyvm", :id, "--cpus", 2] |
| 68 | + vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] |
| 69 | + end |
| 70 | + end |
| 71 | + |
| 72 | + (1..workers).each do |node_number| |
| 73 | + config.vm.define "worker#{node_number}" do |worker| |
| 74 | + worker.vm.box = settings["software"]["cluster"]["box"] |
| 75 | + worker.vm.hostname = "worker#{node_number}" |
| 76 | + ip = node_number + 200 |
| 77 | + worker.vm.network :private_network, ip: "192.168.80.#{ip}", :netmask => "255.255.255.0" |
| 78 | + worker.vm.provision "shell", |
| 79 | + env: { |
| 80 | + "DNS_SERVERS" => settings["network"]["dns_servers"].join(" "), |
| 81 | + "ENVIRONMENT" => settings["environment"], |
| 82 | + "KUBERNETES_VERSION" => settings["software"]["kubernetes"], |
| 83 | + "OS" => settings["software"]["os"] |
| 84 | + }, |
| 85 | + path: "node_scripts/common.sh" |
| 86 | + worker.vm.provision "shell", path: "node_scripts/worker.sh" |
| 87 | + |
| 88 | + worker.vm.provider :virtualbox do |vbox| |
| 89 | + vbox.customize ["modifyvm", :id, "--memory", 4096] |
| 90 | + vbox.customize ["modifyvm", :id, "--cpus", 2] |
| 91 | + vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] |
| 92 | + end |
| 93 | + end |
| 94 | + end |
| 95 | +end |
0 commit comments