diff --git a/Vagrantfile b/Vagrantfile index a7077293..51682774 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,19 +2,6 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'vagrant-common.rb')) vm_ip = "172.16.0.3" # arbitrary private IP -pkgs = %w( - docker-engine=1.10.2-0~wily - aufs-tools - build-essential - ethtool - iputils-arping - libpcap-dev - git - mercurial - bc - jq -) - Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = VAGRANT_IMAGE @@ -34,13 +21,16 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Set SSH keys up to be able to run smoke tests straightaway: config.vm.provision "file", source: "~/.vagrant.d/insecure_private_key", destination: "/home/vagrant/src/github.com/weaveworks/weave/test/insecure_private_key" - - install_build_deps config.vm, pkgs - install_go_toochain config.vm - tweak_user_env config.vm - tweak_docker_daemon config.vm + # Grant permissions on sources: + config.vm.provision :shell, :inline => 'sudo chown -R vagrant:vagrant ~vagrant/src', :privileged => false cleanup config.vm + config.vm.provision 'ansible' do |ansible| + ansible.playbook = 'tools/config_management/setup_weave-net_dev.yml' + ansible.extra_vars = { + go_version: GO_VERSION + } + end end begin diff --git a/test/Vagrantfile b/test/Vagrantfile index 281785f7..cae35134 100644 --- a/test/Vagrantfile +++ b/test/Vagrantfile @@ -3,55 +3,62 @@ Vagrant.require_version ">= 1.7.0" # these ought to match what is in config.sh -n_machines = 3 -ip_prefix = "192.168.48" -ip_suffix_base = 10 +N_MACHINES = 3 +IP_PREFIX = '192.168.48' +IP_SUFFIX_BASE = 10 require File.expand_path(File.join(File.dirname(__FILE__), '..', 'vagrant-common.rb')) -def configure_docker(host, hostname, ip) - pkgs = %w(docker-engine ethtool) - - host.vm.box = VAGRANT_IMAGE - - host.vm.provision :shell, :inline => "hostnamectl set-hostname "+hostname - host.vm.network "private_network", ip: ip - - # Disable default Vagrant shared folder, which we don't need: - host.vm.synced_folder ".", "/vagrant", disabled: true - - host.vm.provision :shell, :inline => "sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D" - host.vm.provision :shell, :inline => "echo deb https://apt.dockerproject.org/repo ubuntu-wily main > /etc/apt/sources.list.d/docker.list" - - install_packages host.vm, pkgs - tweak_docker_daemon host.vm - cleanup host.vm +def ip_address(i) + "#{IP_PREFIX}.#{IP_SUFFIX_BASE + i}" end -def configure_resolv_conf(host) - # Fix the resolution errors by using 8.8.8.8 - host.vm.provision :shell, :inline => "echo 'nameserver 8.8.8.8' > /etc/resolv.conf" +def hostname(i) + "host#{i}" end +ETC_HOSTS_ENTRIES = (1..N_MACHINES).map { |i| "#{ip_address(i)} #{hostname(i)}\n"}.join('') Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| + (1..N_MACHINES).each do |i| + hostname = hostname(i) + config.vm.define hostname do |host| + host.vm.provider :virtualbox do |vb| + vb.name = hostname + vb.memory = 384 + configure_nat_dns(vb) + end - config.vm.provider :virtualbox do |vb| - vb.memory = 384 - configure_nat_dns(vb) - end + # Disable Vagrant 1.7 per host insecure key replacement + host.ssh.insert_key = false - # Disable Vagrant 1.7 per host insecure key replacement - config.ssh.insert_key = false + host.vm.box = VAGRANT_IMAGE + host.vm.network "private_network", ip: ip_address(i) + host.vm.hostname = hostname - (1..n_machines).each do |i| - config.vm.define "host#{i}" do |host| - ip_suffix = ip_suffix_base + i - configure_resolv_conf(host) - configure_docker(host, "host#{i}", "#{ip_prefix}.#{ip_suffix}") + host.vm.provision :shell, :inline => <> /etc/hosts + +# Fix the resolution errors by using 8.8.8.8 +echo 'nameserver 8.8.8.8' > /etc/resolv.conf +END + + # Disable default Vagrant shared folder, which we don't need: + host.vm.synced_folder ".", "/vagrant", disabled: true + + cleanup host.vm + + # Only execute once the Ansible provisioner, when all the machines are up and ready: + if i == N_MACHINES + host.vm.provision 'ansible' do |ansible| + ansible.limit = 'all' # Disable default limit to connect to all the machines + ansible.playbook = '../tools/config_management/setup_weave-net_test.yml' + end + end end end - end begin diff --git a/vagrant-common.rb b/vagrant-common.rb index 001dc8ea..81afa1a1 100644 --- a/vagrant-common.rb +++ b/vagrant-common.rb @@ -1,4 +1,4 @@ -VAGRANT_IMAGE = 'ubuntu/wily64' +VAGRANT_IMAGE = 'bento/ubuntu-16.04' VAGRANTFILE_API_VERSION = '2' def get_go_version_from_build_dockerfile() @@ -11,7 +11,6 @@ def get_go_version_from_build_dockerfile() go_version end -GO_BINARY_PATH = '/usr/local/go/bin' GO_VERSION = get_go_version_from_build_dockerfile() def configure_nat_dns(vb) @@ -19,67 +18,12 @@ def configure_nat_dns(vb) vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"] end -def install_packages(vm, pkgs) - vm.provision :shell, :inline => <