$num_workers=3 Vagrant.require_version ">= 1.8.6" Vagrant.configure("2") do |config| config.vm.box = "bento/ubuntu-16.04" config.vm.synced_folder "../..", "/src" config.vm.provision "shell", path: "host_setup.sh", privileged: false config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", 4096] vb.customize ["modifyvm", :id, "--cpus", 4] vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"] vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.1", "1"] vb.customize ["setextradata", :id, "VBoxInternal/CPUM/SSE4.2", "1"] vb.customize "post-boot",["controlvm", :id, "setlinkstate1", "on"] vb.destroy_unused_network_interfaces = true end config.vm.define "master" do |config| config.vm.hostname = "master" config.vm.provision "shell", path: "master_setup.sh", privileged: false config.vm.network :private_network, ip: "192.168.1.10" config.vm.network :private_network, ip: "10.244.0.10" end (1 .. $num_workers).each do |i| config.vm.define vm_name = "worker%d" % [i] do |config| config.vm.hostname = vm_name config.vm.provision "shell", path: "worker_setup.sh", privileged: false config.vm.network :private_network, ip: "192.168.1.#{i+20}" config.vm.network :private_network, ip: "10.244.0.#{i+20}" end end end