Saltstack Configuration Management#
Minion (or standalone) install:
\curl -L http://bootstrap.saltstack.org | sudo sh
Master install:
\curl -L http://bootstrap.saltstack.org | sudo sh -s -- -M -N
# -M install master
# -N do not install minion
Minion: Who is your master?
# IP address or host name
master_host=10.1.1.2
sed -i.bak -e "s/#master: salt/master: $master_host/" /etc/salt/minion
service salt-minion restart
Master: Accept obedient minion:
salt-key -L
# accept single
salt-key -a ubuntu1204
# accept all
salt-key -A
Master: Order your minion:
salt \* test.ping
Test run on minion:
salt-call -l debug state.highstate
Workflow for remote execution modules:
vim /srv/salt/_modules/foo.py
salt \* saltutil.sync_all
salt --text-out \* foo.bar
# if this does not work. do it on the minion
salt-call saltutil.sync_all; salt-call foo.bar
# to reload, restart minion and master daemons
Troubleshooting#
Stupid Error Messages#
Whey I ran salt-call postgres.user_create trac password=trac login=true
, I got:
got multiple values for keyword argument 'foo'
What it meant: You have forgotten to add the argument “login” to your user_create function.
Jinja dashes and underscores#
Error message:
TypeError: unsupported operand type(s) for -: 'dict' and 'StrictUndefined'
Problem: Template with {{ foo-bar }}
.
Solution: Do not use underscores for variable names in templates. You would not do that in Python either, eh?
Links#
first look https://groups.google.com/forum/#!topic/salt-users/tfCu_dK10ZE
environments (cool presentation) http://dmedvinsky.name/slides/saltstack/