power-mailinabox/Vagrantfile

76 lines
2 KiB
Text
Raw Permalink Normal View History

# -*- mode: ruby -*-
# vi: set ft=ruby :
ip = 2
machines = [
{
'iso' => "debian/buster64",
'host' => "buster"
},
{
'iso' => "generic/ubuntu2004",
2021-08-23 01:06:38 +00:00
'host' => "focal"
},
{
'iso' => "debian/bullseye64",
'host' => "bullseye"
},
{
'iso' => "generic/ubuntu2204",
'host' => "jammy"
},
]
Vagrant.configure("2") do |config|
2020-07-08 18:31:35 +00:00
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--cpus", 1, "--memory", 768]
2020-08-10 02:06:59 +00:00
end
config.vm.provider :libvirt do |v|
v.memory = 768
v.cpus = 1
2020-08-10 02:06:59 +00:00
v.nested = true
end
config.vm.provider :kvm do |kvm|
kvm.memory_size = '768m'
2020-04-11 18:12:40 +00:00
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.
2022-01-31 00:54:29 +00:00
config.vm.synced_folder ".", "/vagrant", nfs_version: "4"
2021-08-23 01:06:38 +00:00
(0..(machines.size - 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
git config --global --add safe.directory /vagrant
# 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