#sudo docker run -e NOMAD_ENABLE=1 -e NOMAD_ADDR=http://172.20.20.10:4646 -e CONSUL_ENABLE=1 -e CONSUL_ADDR=http://172.20.20.10:8500 -p 8000:3000 jippi/hashi-ui SERVER_COUNT = 3 AGENT_COUNT = 2 def serverIP(num) return "172.20.20.#{num+10}" end def agentIP(num) return "172.20.20.#{num+100}" end Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" config.vm.synced_folder "../", "/vagrant" (1..SERVER_COUNT).each do |i| config.vm.define vm_agent_name = "server-%d" % i do |server| PRIVATE_IP = serverIP(i) server.vm.hostname = vm_agent_name server.vm.network :private_network, ip: "#{PRIVATE_IP}" server.vm.provision :shell, :privileged => true, inline: <<-EOF echo "#{vm_agent_name}" | tee /tmp/nodename echo "NODE_NAME=#{vm_agent_name}" >> /etc/environment echo "PRIVATE_IP=#{PRIVATE_IP}" >> /etc/environment echo "SERVER_IP=#{serverIP(i)}" >> /etc/environment echo "count=#{SERVER_COUNT}" >> /etc/environment echo "#{serverIP(1)}" | tee /tmp/server EOF server.vm.provision :shell, :path => "scripts/setup.sh", :privileged => true server.vm.provision :file, :source => "../nomad/jobs", :destination => "/tmp/" server.vm.provision :file, :source => "scripts/serverlist.sh", :destination => "/tmp/" server.vm.provision :file, :source => "scripts/serverstart.sh", :destination => "/tmp/" server.vm.provision :shell, :inline => "/bin/bash /tmp/serverlist.sh", :privileged => true server.vm.provision :shell, :inline => "/bin/bash /tmp/serverstart.sh", :privileged => true end end (1..AGENT_COUNT).each do |i| config.vm.define vm_agent_name = "agent-%d" % i do |agent| agent.vm.hostname = vm_agent_name agent.vm.network :private_network, ip: agentIP(i) agent.vm.provision :shell, :privileged => true, inline: <<-EOF echo "NODE_NAME=#{vm_agent_name}" >> /etc/environment echo "PRIVATE_IP=#{agentIP(i)}" >> /etc/environment echo "SERVER_IP=#{serverIP(1)}" >> /etc/environment echo "count=#{SERVER_COUNT}" >> /etc/environment echo "#{serverIP(1)}" | tee /tmp/server EOF agent.vm.provision :shell, :path => "scripts/setup.sh", :privileged => true agent.vm.provision :file, :source => "scripts/serverlist.sh", :destination => "/tmp/" agent.vm.provision :file, :source => "scripts/clientstart.sh", :destination => "/tmp/" agent.vm.provision :file, :source => "scripts/vaultinit.sh", :destination => "/tmp/" agent.vm.provision :shell, :inline => "/bin/bash /tmp/serverlist.sh", :privileged => true agent.vm.provision :shell, :inline => "/bin/bash /tmp/clientstart.sh", :privileged => true agent.vm.provision :shell, :inline => "/bin/bash /tmp/vaultinit.sh", :privileged => true end end config.vm.provider "virtualbox" do |vb| vb.memory = "1536" end end