github.com/smithx10/nomad@v0.9.1-rc1/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.2-STABLE" 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.ssh.shell = "sh" 53 vmCfg = configureProviders vmCfg, 54 cpus: suggestedCPUCores() 55 vmCfg.vm.network "private_network", type: "dhcp" 56 vmCfg.vm.synced_folder '.', 57 '/opt/gopath/src/github.com/hashicorp/nomad', 58 type: "nfs", 59 bsd__nfs_options: ['noatime'] 60 61 vmCfg.vm.provision "shell", 62 privileged: true, 63 path: './scripts/vagrant-freebsd-priv-config.sh' 64 65 vmCfg.vm.provision "shell", 66 privileged: false, 67 path: './scripts/vagrant-freebsd-unpriv-bootstrap.sh' 68 end 69 70 # Test Cluster (Linux) 71 1.upto(3) do |n| 72 serverName = "nomad-server%02d" % [n] 73 clientName = "nomad-client%02d" % [n] 74 serverIP = "10.199.0.%d" % [10 + n] 75 clientIP = "10.199.0.%d" % [20 + n] 76 77 config.vm.define serverName, autostart: false, primary: false do |vmCfg| 78 vmCfg.vm.box = LINUX_BASE_BOX 79 vmCfg.vm.hostname = serverName 80 vmCfg = configureProviders(vmCfg) 81 vmCfg = configureLinuxProvisioners(vmCfg) 82 83 vmCfg.vm.provider "virtualbox" do |_| 84 vmCfg.vm.network :private_network, ip: serverIP 85 end 86 87 vmCfg.vm.synced_folder '.', 88 '/opt/gopath/src/github.com/hashicorp/nomad' 89 90 vmCfg.vm.provision "shell", 91 privileged: true, 92 path: './scripts/vagrant-linux-priv-zeroconf.sh' 93 end 94 95 config.vm.define clientName, autostart: false, primary: false do |vmCfg| 96 vmCfg.vm.box = LINUX_BASE_BOX 97 vmCfg.vm.hostname = clientName 98 vmCfg = configureProviders(vmCfg) 99 vmCfg = configureLinuxProvisioners(vmCfg) 100 101 vmCfg.vm.provider "virtualbox" do |_| 102 vmCfg.vm.network :private_network, ip: clientIP 103 end 104 105 vmCfg.vm.synced_folder '.', 106 '/opt/gopath/src/github.com/hashicorp/nomad' 107 108 vmCfg.vm.provision "shell", 109 privileged: true, 110 path: './scripts/vagrant-linux-priv-zeroconf.sh' 111 end 112 end 113 end 114 115 def configureLinuxProvisioners(vmCfg) 116 vmCfg.vm.provision "shell", 117 privileged: true, 118 inline: 'rm -f /home/vagrant/linux.iso' 119 120 vmCfg.vm.provision "shell", 121 privileged: true, 122 path: './scripts/vagrant-linux-priv-go.sh' 123 124 vmCfg.vm.provision "shell", 125 privileged: true, 126 path: './scripts/vagrant-linux-priv-config.sh' 127 128 vmCfg.vm.provision "shell", 129 privileged: true, 130 path: './scripts/vagrant-linux-priv-dev.sh' 131 132 vmCfg.vm.provision "shell", 133 privileged: true, 134 path: './scripts/vagrant-linux-priv-docker.sh' 135 136 vmCfg.vm.provision "shell", 137 privileged: true, 138 path: './scripts/vagrant-linux-priv-consul.sh' 139 140 vmCfg.vm.provision "shell", 141 privileged: true, 142 path: './scripts/vagrant-linux-priv-vault.sh' 143 144 vmCfg.vm.provision "shell", 145 privileged: true, 146 path: './scripts/vagrant-linux-priv-rkt.sh' 147 148 vmCfg.vm.provision "shell", 149 privileged: false, 150 path: './scripts/vagrant-linux-unpriv-ui.sh' 151 152 vmCfg.vm.provision "shell", 153 privileged: true, 154 path: './scripts/vagrant-linux-priv-protoc.sh' 155 156 return vmCfg 157 end 158 159 def configureProviders(vmCfg, cpus: "2", memory: "2048") 160 vmCfg.vm.provider "virtualbox" do |v| 161 v.customize ["modifyvm", :id, "--cableconnected1", "on"] 162 v.memory = memory 163 v.cpus = cpus 164 end 165 166 ["vmware_fusion", "vmware_workstation"].each do |p| 167 vmCfg.vm.provider p do |v| 168 v.enable_vmrun_ip_lookup = false 169 v.vmx["memsize"] = memory 170 v.vmx["numvcpus"] = cpus 171 end 172 end 173 174 vmCfg.vm.provider "virtualbox" do |v| 175 v.customize ["modifyvm", :id, "--cableconnected1", "on"] 176 v.memory = memory 177 v.cpus = cpus 178 end 179 180 return vmCfg 181 end 182 183 def suggestedCPUCores() 184 case RbConfig::CONFIG['host_os'] 185 when /darwin/ 186 Integer(`sysctl -n hw.ncpu`) / 2 187 when /linux/ 188 Integer(`grep -c ^processor /proc/cpuinfo`) / 2 189 else 190 2 191 end 192 end