I was banging against Vagrant’s preferred way of doing salt deployments. Horrible nasty huge bash scripts that cater for every possibility.
I just wanted to spin up:
- a reasonably modern Ubuntu version
- set it up as a master/minion on the same machine
- copy in my salt master config and my salt minion config
- call
salt -v "*" state.highstate
Strange things would fail. I was filled with sadness.
Then I fixed things.
Add the following lines to your Vagrantfile
:
#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
apt-get --yes -q install python-software-properties
add-apt-repository ppa:saltstack/salt2015-5 -y
apt-get --yes -q update
mkdir /etc/salt
apt-get --yes -q install python-git salt-master salt-minion
cp /srv/vagrant_salt_bootstrap/master /etc/salt/master
cp /srv/vagrant_salt_bootstrap/minion /etc/salt/minion
restart salt-minion
restart salt-master
sleep 10
salt-key -y -a '*'
sleep 10
salt -v "*" state.highstate -l debug
call this from your Vagrantfile with the following configuration:
config.vm.synced_folder "saltstack/vagrant_salt_bootstrap", "/srv/vagrant_salt_bootstrap"
config.vm.provision :shell, :inline => "sudo /srv/vagrant_salt_bootstrap/bootstrap.sh"
You can see it in action in the buddycloud-vm project.