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