SaltStack
When you are in a situation where you need your configuration managment to be client/server saltstack is a good choice instead of ansible.
All the following commands if run are run from the salt master.
Install
apt-get install -y python-software-properties
add-apt-repository ppa:saltstack/salt -y
apt-get update
apt-get install -y salt-master
service salt-master restart
This will get a SaltStack master server up and running. From this point you can configure it any way you want.
See the SaltStack example for more configuration options.
Master accept minions
Accept All
salt-key –A
Delete All
salt-key –D
Once a minion is accepted you should refresh its package list
salt '*' pkg.refresh_db
Add a minion to a Grain/Role
Review http://docs.saltstack.com/en/latest/topics/targeting/grains.html
Minion config file: C:\salt\conf\minion
Find the section that looks like the following and add your new role.
grains:
roles:
- IISStaging
That could become the following if we added a new role called PowerShellExample.
grains:
roles:
- IISStaging
- PowerShellExample
After saving restart the salt minion with
On Windows
- Open services.msc
- find salt-minion service
- restart
On linux
sudo salt-minion -d
Execute execution modules in state sls files
See http://docs.saltstack.com/en/latest/ref/states/all/salt.states.module.html#module-salt.states.module
Target Machines based on Roles
See http://www.saltstat.es/posts/role-infrastructure.html
Run command on all minions
salt '*' test.ping
Run command on only ubuntu servers
salt -C 'G@os:Ubuntu' test.ping
Run command on only IIS servers
salt -C 'G@roles:IISStaging' test.ping
Apply State to all servers
salt '*' state.highstate
Apply State to particular environments
salt '*' state.highstate env=base
The top.sls file can have multiple environments. By default this example only has 1 called base.
Trigger run on all grains with the role NginxStaging Updates
salt -C 'G@roles:NginxStaging' state.highstate
Refresh Git WinRepo
salt-run winrepo.update_git_repos
salt-run winrepo.genrepo
salt '*' pkg.refresh_db
Debug High State Errors
Call the following from a minion
salt-call -l debug state.highstate
or
salt-call state.show_highstate
Live Site
Upload states to master server in the folder
/srv/salt
When uploading the files use an scp client (filezille, or whatever).
Upload the full contents of the local folder /salt/*.