nodes = { 'db' => [3, 10], 'haproxy' => [1, 20], 'web' => [2,30], 'worker' => [1,40], } network = "192.168.20" Vagrant.configure("2") do |config| nodes.each do |prefix, (count, ip_start)| count.times do |i| hostname = prefix + i.to_s #puts "hostnames: " + hostname #puts "ip: #{ip_start+i}" config.vm.define hostname do |box| box.vm.box = "centos64" box.vm.hostname = "#{hostname}" puts "ip for #{hostname} #{network}.#{ip_start+i}" box.vm.network :private_network, ip: "#{network}.#{ip_start+i}" # set memory box.vm.provider :virtualbox do |vbox| vbox.customize ["modifyvm", :id, "--memory", 512] vbox.customize ["modifyvm", :id, "--cpus", 1] if prefix == "db" vbox.customize ["modifyvm", :id, "--memory", 1024] end end end end end end