scullery/Vagrantfile-Template
Georg Pfuetzenreuter 01162e78a3
Run master bootstrap after initialization
Allow bootstrap scripts to depend on an operational Salt master service.

Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
2023-05-24 00:29:19 +02:00

59 lines
2.2 KiB
Ruby

# -*- mode: ruby -*-
# vi: set ft=ruby :
if ! ( ENV['SCULLERY_BOX_NAME'] && ENV['SCULLERY_BOX_IMAGE'] ) || ! ( ENV['SCULLERY_MASTERS'] || ENV['SCULLERY_MINIONS'] )
print('Missing parameters')
exit 1
end
salt_bootstrap = ENV['SCULLERY_BOOTSTRAP']
salt_file_roots = 'file_roots:\n base:\n - /srv/salt\n - /srv/formulas\n'
Vagrant.configure("2") do |config|
config.vm.provider "libvirt"
config.vm.box = ENV['SCULLERY_BOX_NAME']
config.vm.box_url = ENV['SCULLERY_BOX_IMAGE']
config.vm.provision "shell", inline: <<-SHELL
systemctl restart network
SHELL
if ENV['SCULLERY_MASTERS']
ENV['SCULLERY_MASTERS'].split(',').each do |vmname|
config.vm.define "#{vmname}", primary: true do |master_config|
master_config.vm.hostname = "#{vmname}"
master_config.vm.provider :libvirt do |libvirt|
libvirt.memory = 768
end
master_config.vm.provision "shell", env: {'SALT_FILE_ROOTS': salt_file_roots}, inline: <<-SHELL
printf 'auto_accept: True\n' > /etc/salt/master.d/notsecure.conf
printf "$SALT_FILE_ROOTS" > /etc/salt/master.d/roots.conf
systemctl enable --now salt-master
SHELL
if salt_bootstrap
master_config.vm.provision "shell", path: salt_bootstrap
end
end
end
end
if ENV['SCULLERY_MINIONS']
ENV['SCULLERY_MINIONS'].split(',').each do |vmname|
config.vm.define "#{vmname}" do |minion_config|
minion_config.vm.hostname = "#{vmname}"
if ENV['SCULLERY_MASTERS']
minion_config.vm.synced_folder '.', '/vagrant', disabled: true
minion_config.vm.provision "shell", inline: <<-SHELL
sed -i 's/^#master:.*/master: scullery-master0/' /etc/salt/minion
systemctl enable --now salt-minion
SHELL
else
minion_config.vm.provision "shell", env: {'SALT_FILE_ROOTS': salt_file_roots}, inline: <<-SHELL
printf "$SALT_FILE_ROOTS" > /etc/salt/minion.d/roots.conf
SHELL
if salt_bootstrap
minion_config.vm.provision "shell", path: salt_bootstrap
end
end
end
end
end
end