VAGRANTFILE_API_VERSION = "2" # these ought to match what is in config.sh n_machines = 2 ip_prefix = "192.168.48" ip_suffix_base = 10 def configure_docker(host, hostname, ip) pkgs = "lxc-docker" host.vm.box = "phusion/ubuntu-14.04-amd64" host.vm.box_url = "https://oss-binaries.phusionpassenger.com/vagrant/boxes/latest/ubuntu-14.04-amd64-vbox.box" host.vm.hostname = hostname host.vm.network "private_network", ip: ip # host.vm.synced_folder "./", "/home/vagrant/src/github.com/zettio/weave" host.vm.provision :shell, :inline => "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9" host.vm.provision :shell, :inline => "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" pkg_cmd = "apt-get update -qq; " \ "apt-get install -q -y --force-yes --no-install-recommends " pkg_cmd << pkgs host.vm.provision :shell, :inline => pkg_cmd host.vm.provision :shell, :inline => "usermod -a -G docker vagrant; " # Listen on the remote API host.vm.provision :shell, :inline => "echo 'DOCKER_OPTS=\"-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375\"' >> /etc/default/docker" host.vm.provision :shell, :inline => "service docker restart" end Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| (1..n_machines).each do |i| config.vm.define "host#{i}" do |host| ip_suffix = ip_suffix_base + i configure_docker(host, "host#{i}", "#{ip_prefix}.#{ip_suffix}") end end end