github.com/iqoqo/nomad@v0.11.3-0.20200911112621-d7021c74d101/Vagrantfile (about) 1 # -*- mode: ruby -*- 2 # vi: set ft=ruby : 3 # 4 5 LINUX_BASE_BOX = "bento/ubuntu-16.04" 6 FREEBSD_BASE_BOX = "freebsd/FreeBSD-11.3-STABLE" 7 8 LINUX_IP_ADDRESS = "10.199.0.200" 9 10 Vagrant.configure(2) do |config| 11 # Compilation and development boxes 12 config.vm.define "linux", autostart: true, primary: true do |vmCfg| 13 vmCfg.vm.box = LINUX_BASE_BOX 14 vmCfg.vm.hostname = "linux" 15 vmCfg = configureProviders vmCfg, 16 cpus: suggestedCPUCores() 17 18 vmCfg = configureLinuxProvisioners(vmCfg) 19 20 vmCfg.vm.synced_folder '.', 21 '/opt/gopath/src/github.com/hashicorp/nomad' 22 23 vmCfg.vm.provision "shell", 24 privileged: false, 25 path: './scripts/vagrant-linux-unpriv-bootstrap.sh' 26 27 vmCfg.vm.provider "virtualbox" do |_| 28 vmCfg.vm.network :private_network, ip: LINUX_IP_ADDRESS 29 end 30 end 31 32 config.vm.define "linux-ui", autostart: false, primary: false do |vmCfg| 33 vmCfg.vm.box = LINUX_BASE_BOX 34 vmCfg.vm.hostname = "linux" 35 vmCfg = configureProviders vmCfg, 36 cpus: suggestedCPUCores() 37 38 vmCfg = configureLinuxProvisioners(vmCfg) 39 40 vmCfg.vm.synced_folder '.', 41 '/opt/gopath/src/github.com/hashicorp/nomad' 42 43 vmCfg.vm.provision "shell", 44 privileged: false, 45 path: './scripts/vagrant-linux-unpriv-bootstrap.sh' 46 47 # Expose the nomad api and ui to the host 48 vmCfg.vm.network :forwarded_port, guest: 4646, host: 4646, auto_correct: true 49 vmCfg.vm.network :forwarded_port, guest: 8500, host: 8500, auto_correct: true 50 51 # Expose Ember ports to the host (one for the site, one for livereload) 52 vmCfg.vm.network :forwarded_port, guest: 4201, host: 4201, auto_correct: true 53 vmCfg.vm.network :forwarded_port, guest: 49153, host: 49153, auto_correct: true 54 end 55 56 config.vm.define "freebsd", autostart: false, primary: false do |vmCfg| 57 vmCfg.vm.box = FREEBSD_BASE_BOX 58 vmCfg.vm.hostname = "freebsd" 59 vmCfg.ssh.shell = "sh" 60 vmCfg = configureProviders vmCfg, 61 cpus: suggestedCPUCores() 62 vmCfg.vm.network "private_network", type: "dhcp" 63 vmCfg.vm.synced_folder '.', 64 '/opt/gopath/src/github.com/hashicorp/nomad', 65 type: "nfs", 66 bsd__nfs_options: ['noatime'] 67 68 vmCfg.vm.provision "shell", 69 privileged: true, 70 path: './scripts/vagrant-freebsd-priv-config.sh' 71 72 vmCfg.vm.provision "shell", 73 privileged: false, 74 path: './scripts/vagrant-freebsd-unpriv-bootstrap.sh' 75 end 76 77 # Test Cluster (Linux) 78 1.upto(3) do |n| 79 serverName = "nomad-server%02d" % [n] 80 clientName = "nomad-client%02d" % [n] 81 serverIP = "10.199.0.%d" % [10 + n] 82 clientIP = "10.199.0.%d" % [20 + n] 83 84 config.vm.define serverName, autostart: false, primary: false do |vmCfg| 85 vmCfg.vm.box = LINUX_BASE_BOX 86 vmCfg.vm.hostname = serverName 87 vmCfg = configureProviders(vmCfg) 88 vmCfg = configureLinuxProvisioners(vmCfg) 89 90 vmCfg.vm.provider "virtualbox" do |_| 91 vmCfg.vm.network :private_network, ip: serverIP 92 end 93 94 vmCfg.vm.synced_folder '.', 95 '/opt/gopath/src/github.com/hashicorp/nomad' 96 97 vmCfg.vm.provision "shell", 98 privileged: true, 99 path: './scripts/vagrant-linux-priv-zeroconf.sh' 100 end 101 102 config.vm.define clientName, autostart: false, primary: false do |vmCfg| 103 vmCfg.vm.box = LINUX_BASE_BOX 104 vmCfg.vm.hostname = clientName 105 vmCfg = configureProviders(vmCfg) 106 vmCfg = configureLinuxProvisioners(vmCfg) 107 108 vmCfg.vm.provider "virtualbox" do |_| 109 vmCfg.vm.network :private_network, ip: clientIP 110 end 111 112 vmCfg.vm.synced_folder '.', 113 '/opt/gopath/src/github.com/hashicorp/nomad' 114 115 vmCfg.vm.provision "shell", 116 privileged: true, 117 path: './scripts/vagrant-linux-priv-zeroconf.sh' 118 end 119 end 120 end 121 122 def configureLinuxProvisioners(vmCfg) 123 vmCfg.vm.provision "shell", 124 privileged: true, 125 inline: 'rm -f /home/vagrant/linux.iso' 126 127 vmCfg.vm.provision "shell", 128 privileged: true, 129 path: './scripts/vagrant-linux-priv-go.sh' 130 131 vmCfg.vm.provision "shell", 132 privileged: true, 133 path: './scripts/vagrant-linux-priv-config.sh' 134 135 vmCfg.vm.provision "shell", 136 privileged: true, 137 path: './scripts/vagrant-linux-priv-dev.sh' 138 139 vmCfg.vm.provision "shell", 140 privileged: true, 141 path: './scripts/vagrant-linux-priv-docker.sh' 142 143 vmCfg.vm.provision "shell", 144 privileged: true, 145 path: './scripts/vagrant-linux-priv-consul.sh' 146 147 vmCfg.vm.provision "shell", 148 privileged: true, 149 path: './scripts/vagrant-linux-priv-cni.sh' 150 151 vmCfg.vm.provision "shell", 152 privileged: true, 153 path: './scripts/vagrant-linux-priv-vault.sh' 154 155 vmCfg.vm.provision "shell", 156 privileged: false, 157 path: './scripts/vagrant-linux-unpriv-ui.sh' 158 159 vmCfg.vm.provision "shell", 160 privileged: true, 161 path: './scripts/vagrant-linux-priv-protoc.sh' 162 163 return vmCfg 164 end 165 166 def configureProviders(vmCfg, cpus: "2", memory: "2048") 167 vmCfg.vm.provider "virtualbox" do |v| 168 v.customize ["modifyvm", :id, "--cableconnected1", "on"] 169 v.memory = memory 170 v.cpus = cpus 171 end 172 173 ["vmware_fusion", "vmware_workstation"].each do |p| 174 vmCfg.vm.provider p do |v| 175 v.enable_vmrun_ip_lookup = false 176 v.vmx["memsize"] = memory 177 v.vmx["numvcpus"] = cpus 178 end 179 end 180 181 vmCfg.vm.provider "virtualbox" do |v| 182 v.customize ["modifyvm", :id, "--cableconnected1", "on", "--audio", "none"] 183 v.memory = memory 184 v.cpus = cpus 185 end 186 187 return vmCfg 188 end 189 190 def suggestedCPUCores() 191 case RbConfig::CONFIG['host_os'] 192 when /darwin/ 193 Integer(`sysctl -n hw.ncpu`) / 2 194 when /linux/ 195 Integer(`grep -c ^processor /proc/cpuinfo`) / 2 196 else 197 2 198 end 199 end