Add all supported deployments; adjust box sizes to reflect a very bad case scenario
This commit is contained in:
parent
a4c5f14237
commit
2c975e43cc
1 changed files with 47 additions and 27 deletions
74
Vagrantfile
vendored
74
Vagrantfile
vendored
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue