From 2c975e43cc7a02cd947c0e7605db5b431fb5433a Mon Sep 17 00:00:00 2001 From: David Date: Sat, 14 Aug 2021 16:50:50 +0100 Subject: [PATCH] Add all supported deployments; adjust box sizes to reflect a very bad case scenario --- Vagrantfile | 74 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/Vagrantfile b/Vagrantfile index 35ce28a..eb707fb 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,46 +2,66 @@ # -*- mode: ruby -*- # vi: set ft=ruby : +ip = 2 +machines = [ + { + 'iso' => "debian/buster64", + 'host' => "buster" + }, + { + 'iso' => "generic/ubuntu2004", + 'host' => "focal" + } +] + Vagrant.configure("2") do |config| - config.vm.box = "debian/buster64" config.vm.provider :virtualbox do |vb| - vb.customize ["modifyvm", :id, "--cpus", 4, "--memory", 4096] + vb.customize ["modifyvm", :id, "--cpus", 1, "--memory", 512] end config.vm.provider :libvirt do |v| - v.memory = 4096 - v.cpus = 4 + v.memory = 512 + v.cpus = 1 v.nested = true end config.vm.provider :kvm do |kvm| - kvm.memory_size = '4096m' + kvm.memory_size = '512m' end # Network config: Since it's a mail server, the machine must be connected # to the public web. However, we currently don't want to expose SSH since # the machine's box will let anyone log into it. So instead we'll put the # machine on a private network. - config.vm.hostname = "mailinabox.lan" - config.vm.network "private_network", ip: "192.168.50.4" config.vm.synced_folder ".", "/vagrant", nfs_version: "3" - #, :mount_options => ["ro"] - config.vm.provision "shell", :inline => <<-SH - # Set environment variables so that the setup script does - # not ask any questions during provisioning. We'll let the - # machine figure out its own public IP. - export NONINTERACTIVE=1 - export PUBLIC_IP=192.168.50.4 - export PUBLIC_IPV6=auto - export PRIVATE_IP=192.168.50.4 - export PRIMARY_HOSTNAME=auto - export SKIP_NETWORK_CHECKS=1 - # Start the setup script. - cd /vagrant - setup/start.sh - # After setup is done, fully open the ssh ports again - ufw allow ssh -SH - config.vm.provision "shell", run: "always", :inline => <<-SH - service mailinabox restart -SH + (0..1).each do |n| + node = machines[n] + config.vm.define node['host'] do |m| + m.vm.box = node['iso'] + m.vm.hostname = "#{node['host']}.mailinabox.lan" + m.vm.network "private_network", ip: "192.168.168.#{ip+n}" + + m.vm.provision "shell", :inline => <<-SH + # Make sure we have IPv6 loopback (::1) + sysctl -w net.ipv6.conf.lo.disable_ipv6=0 + # Set environment variables so that the setup script does + # not ask any questions during provisioning. We'll let the + # machine figure out its own public IP. + export NONINTERACTIVE=1 + export PUBLIC_IP=192.168.168.#{ip+n} + export PUBLIC_IPV6=auto + export PRIVATE_IP=192.168.168.#{ip+n} + export PRIMARY_HOSTNAME=\"#{node['host']}.mailinabox.lan\" + export SKIP_NETWORK_CHECKS=1 + # Start the setup script. + cd /vagrant + setup/start.sh + # After setup is done, fully open the ssh ports again + ufw allow ssh + SH + + m.vm.provision "shell", run: "always", :inline => <<-SH + service mailinabox restart + SH + end + end end