********************************** 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 ----- - http://saltstack.org/ - first look https://groups.google.com/forum/#!topic/salt-users/tfCu_dK10ZE - salt-call http://salt.readthedocs.org/en/latest/topics/troubleshooting/index.html?highlight=debug#using-salt-call - environments (cool presentation) http://dmedvinsky.name/slides/saltstack/