github.com/blixtra/nomad@v0.7.2-0.20171221000451-da9a1d7bb050/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 25 # Expose the nomad api and ui to the host 26 vmCfg.vm.network "forwarded_port", guest: 4646, host: 4646, auto_correct: true 27 28 # Expose Ember ports to the host (one for the site, one for livereload) 29 vmCfg.vm.network :forwarded_port, guest: 4201, host: 4201, auto_correct: true 30 vmCfg.vm.network :forwarded_port, guest: 49153, host: 49153, auto_correct: true 31 end 32 33 config.vm.define "freebsd", autostart: false, primary: false do |vmCfg| 34 vmCfg.vm.box = FREEBSD_BASE_BOX 35 vmCfg.vm.hostname = "freebsd" 36 vmCfg = configureProviders vmCfg, 37 cpus: suggestedCPUCores() 38 39 vmCfg.vm.synced_folder '.', 40 '/opt/gopath/src/github.com/hashicorp/nomad', 41 type: "nfs", 42 bsd__nfs_options: ['noatime'] 43 44 vmCfg.vm.provision "shell", 45 privileged: true, 46 path: './scripts/vagrant-freebsd-priv-config.sh' 47 48 vmCfg.vm.provision "shell", 49 privileged: false, 50 path: './scripts/vagrant-freebsd-unpriv-bootstrap.sh' 51 end 52 53 # Test Cluster (Linux) 54 1.upto(3) do |n| 55 serverName = "nomad-server%02d" % [n] 56 clientName = "nomad-client%02d" % [n] 57 serverIP = "10.199.0.%d" % [10 + n] 58 clientIP = "10.199.0.%d" % [20 + n] 59 60 config.vm.define serverName, autostart: false, primary: false do |vmCfg| 61 vmCfg.vm.box = LINUX_BASE_BOX 62 vmCfg.vm.hostname = serverName 63 vmCfg = configureProviders(vmCfg) 64 vmCfg = configureLinuxProvisioners(vmCfg) 65 66 vmCfg.vm.provider "virtualbox" do |_| 67 vmCfg.vm.network :private_network, ip: serverIP 68 end 69 70 vmCfg.vm.synced_folder '.', 71 '/opt/gopath/src/github.com/hashicorp/nomad' 72 73 vmCfg.vm.provision "shell", 74 privileged: true, 75 path: './scripts/vagrant-linux-priv-zeroconf.sh' 76 end 77 78 config.vm.define clientName, autostart: false, primary: false do |vmCfg| 79 vmCfg.vm.box = LINUX_BASE_BOX 80 vmCfg.vm.hostname = clientName 81 vmCfg = configureProviders(vmCfg) 82 vmCfg = configureLinuxProvisioners(vmCfg) 83 84 vmCfg.vm.provider "virtualbox" do |_| 85 vmCfg.vm.network :private_network, ip: clientIP 86 end 87 88 vmCfg.vm.synced_folder '.', 89 '/opt/gopath/src/github.com/hashicorp/nomad' 90 91 vmCfg.vm.provision "shell", 92 privileged: true, 93 path: './scripts/vagrant-linux-priv-zeroconf.sh' 94 end 95 end 96 end 97 98 def configureLinuxProvisioners(vmCfg) 99 vmCfg.vm.provision "shell", 100 privileged: true, 101 inline: 'rm -f /home/vagrant/linux.iso' 102 103 vmCfg.vm.provision "shell", 104 privileged: true, 105 path: './scripts/vagrant-linux-priv-go.sh' 106 107 vmCfg.vm.provision "shell", 108 privileged: true, 109 path: './scripts/vagrant-linux-priv-config.sh' 110 111 vmCfg.vm.provision "shell", 112 privileged: true, 113 path: './scripts/vagrant-linux-priv-consul.sh' 114 115 vmCfg.vm.provision "shell", 116 privileged: true, 117 path: './scripts/vagrant-linux-priv-vault.sh' 118 119 vmCfg.vm.provision "shell", 120 privileged: true, 121 path: './scripts/vagrant-linux-priv-rkt.sh' 122 123 vmCfg.vm.provision "shell", 124 privileged: false, 125 path: './scripts/vagrant-linux-priv-ui.sh' 126 127 return vmCfg 128 end 129 130 def configureProviders(vmCfg, cpus: "2", memory: "2048") 131 vmCfg.vm.provider "virtualbox" do |v| 132 v.memory = memory 133 v.cpus = cpus 134 end 135 136 ["vmware_fusion", "vmware_workstation"].each do |p| 137 vmCfg.vm.provider p do |v| 138 v.enable_vmrun_ip_lookup = false 139 v.vmx["memsize"] = memory 140 v.vmx["numvcpus"] = cpus 141 end 142 end 143 144 vmCfg.vm.provider "virtualbox" do |v| 145 v.memory = memory 146 v.cpus = cpus 147 end 148 149 return vmCfg 150 end 151 152 def suggestedCPUCores() 153 case RbConfig::CONFIG['host_os'] 154 when /darwin/ 155 Integer(`sysctl -n hw.ncpu`) / 2 156 when /linux/ 157 Integer(`cat /proc/cpuinfo | grep processor | wc -l`) / 2 158 else 159 2 160 end 161 end