diff --git a/Vagrantfile b/Vagrantfile index a1f702a0..6a76addb 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,7 +1,20 @@ VAGRANTFILE_API_VERSION = "2" +require './vagrant-common.rb' + vm_ip = "172.16.0.3" # arbitrary private IP -pkgs = "lxc-docker aufs-tools build-essential ethtool iputils-arping libpcap-dev git mercurial bc" + +pkgs = %w( + lxc-docker + aufs-tools + build-essential + ethtool + iputils-arping + libpcap-dev + git + mercurial + bc +) Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| @@ -16,30 +29,12 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.synced_folder ".", "/vagrant", disabled: true config.vm.synced_folder ".", "/home/vagrant/src/github.com/weaveworks/weave" - config.vm.provision :shell, :inline => "ln -sf /home/vagrant/src/github.com/weaveworks/weave /home/vagrant/" - config.vm.provision :shell, :inline => "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9" - config.vm.provision :shell, :inline => "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" - - pkg_cmd = "export DEBIAN_FRONTEND=noninteractive; " \ - "apt-get update -qq; " \ - "apt-get install -qq --no-install-recommends #{pkgs}" - - install_go_toolchain = "curl -s https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz | tar xz -C /usr/local" - - go_path = "/usr/local/go/bin" - - config.vm.provision :shell, :inline => pkg_cmd - config.vm.provision :shell, :inline => install_go_toolchain - config.vm.provision :shell, :inline => "usermod -a -G docker vagrant" - config.vm.provision :shell, :inline => "echo export GOPATH=\"\${HOME\}\" >> ~vagrant/.profile", :privileged => false - config.vm.provision :shell, :inline => "echo export PATH=\"\${HOME}/bin:#{go_path}:\${PATH}\" >> ~vagrant/.profile", :privileged => false - - config.vm.provision :shell, :inline => "chown -R vagrant:vagrant ~vagrant/src" - config.vm.provision :shell, :inline => "#{go_path}/go clean -i net; #{go_path}/go install -tags netgo std" - - config.vm.provision :shell, :inline => "echo 'DOCKER_OPTS=\"-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375\"' >> /etc/default/docker" - config.vm.provision :shell, :inline => "service docker restart" + install_build_deps config.vm, pkgs + install_go_toochain config.vm + tweak_user_env config.vm + tweak_docker_daemon config.vm + cleanup config.vm end diff --git a/test/Vagrantfile b/test/Vagrantfile index 6de338cb..5e0a4850 100644 --- a/test/Vagrantfile +++ b/test/Vagrantfile @@ -9,8 +9,10 @@ n_machines = 2 ip_prefix = "192.168.48" ip_suffix_base = 10 +require '../vagrant-common.rb' + def configure_docker(host, hostname, ip) - pkgs = "lxc-docker ethtool" + pkgs = %w(lxc-docker ethtool) host.vm.box = "ubuntu/ubuntu-14.10-amd64" host.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/utopic/current/utopic-server-cloudimg-amd64-vagrant-disk1.box" @@ -23,15 +25,13 @@ def configure_docker(host, hostname, ip) 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 + install_packages host.vm, pkgs 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" + cleanup(host.vm) end diff --git a/vagrant-common.rb b/vagrant-common.rb new file mode 100644 index 00000000..7cf8540b --- /dev/null +++ b/vagrant-common.rb @@ -0,0 +1,64 @@ +$go_version = "1.4.2" + +$go_path = "/usr/local/go/bin" + +def install_packages(vm, pkgs) + vm.provision :shell, :inline => <