Allow directories to be specified in suite and test configuration sections which will be linked to /srv/pillar on either the master or the minion. Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.0 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_pillar = ENV['SCULLERY_PILLAR']
 | |
| 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
 | |
|   if [ ! -f '/var/adm/scullery.configured' ]
 | |
|   then
 | |
|     systemctl restart network
 | |
|     touch /var/adm/scullery.configured
 | |
|   fi
 | |
|   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, 'SALT_PILLAR': salt_pillar}, 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
 | |
|           if [ -n "$SALT_PILLAR" -a -d "/vagrant/$SALT_PILLAR" ]
 | |
|           then
 | |
|             if [ -d '/srv/pillar' ]
 | |
|             then
 | |
|               rm -r /srv/pillar
 | |
|             fi
 | |
|             if [ ! -L '/srv/pillar' ]
 | |
|             then
 | |
|               ln -sv "/vagrant/$SALT_PILLAR" /srv/pillar
 | |
|             fi
 | |
|           fi
 | |
|           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, 'SALT_PILLAR': salt_pillar}, inline: <<-SHELL
 | |
|             printf "$SALT_FILE_ROOTS" > /etc/salt/minion.d/roots.conf
 | |
|             if [ -n "$SALT_PILLAR" -a -d "/vagrant/$SALT_PILLAR" ]
 | |
|             then
 | |
|               if [ -d '/srv/pillar' ]
 | |
|               then
 | |
|                 rm -r /srv/pillar
 | |
|               fi
 | |
|               if [ ! -L '/srv/pillar' ]
 | |
|               then
 | |
|                 ln -sv "/vagrant/$SALT_PILLAR" /srv/pillar
 | |
|               fi
 | |
|             fi
 | |
|             SHELL
 | |
|             if salt_bootstrap
 | |
|               minion_config.vm.provision "shell", path: salt_bootstrap
 | |
|             end
 | |
|           end
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |