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