Files
weave/test/Vagrantfile
T
2018-01-06 12:48:17 +01:00

69 lines
2.0 KiB
Ruby

# Necessary because the switch disabling unwanted insecure key
# replacement in Vagrant 1.7+ is not accepted by earlier versions
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
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'vagrant-common.rb'))
def ip_address(i)
"#{IP_PREFIX}.#{IP_SUFFIX_BASE + i}"
end
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 = 2048
configure_nat_dns(vb)
end
# Disable Vagrant 1.7 per host insecure key replacement
host.ssh.insert_key = false
host.vm.box = VAGRANT_IMAGE
host.vm.network "private_network", ip: ip_address(i)
host.vm.hostname = hostname
host.vm.provision :shell, :inline => <<END
# Tests rely on hostnames, so we remove potentially incorrect entries (e.g. localhost), and add mappings of IP addresses to hostnames:
sed -i.bak '/#{hostname}/d' /etc/hosts
echo "#{ETC_HOSTS_ENTRIES}" >> /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'
ansible.extra_vars = ansibleize(get_dependencies_version_from_file_and_env())
end
end
end
end
end
begin
load 'Vagrantfile.local'
rescue LoadError
end