SALT STATE TREE
In case you followed this howto, you have a slight insight of how easy to simultaneously manage simple tasks on several servers.
Let's go one step towards. It is about manage complex tasks in complex environment by one command.
More details about it in -> http://docs.saltstack.com/ref/states/highstate.html
In order to have this feature, you have to configure your salt a little, at the folder /etc/salt
On your SALT MASTER, you should have a file, called: master
To get rid of commented lines, it looks like this:
root@salt-master:/etc/salt# grep -E -v '^#|^ *$' /etc/salt/master
Edit it until the result should be:
state_top: top.sls
file_roots:
base:
- /srv/salt
log_file: /var/log/salt/master
key_logfile: /var/log/salt/key
log_level: debug
As a next step, we create three state files:
/srv/salt/top.sls -> It is necessary /srv/salt/motd.sls -> It is optional /srv/salt/line6svn.sls -> It is optional
The top.sls file is the entry point, defined in /etc/salt/master
It gives the name of SaltStateFiles without ".sls"
State files contains commands and configuration directives.
You can also use fileter in servers name or other grains filter in everywhere is state tree.
cat /srv/salt/top.sls
base:
'*':
- motd
- line6svn
It check out a Subversion repository:
root@salt-master:/srv/salt# cat /srv/salt/line6svn.sls
https://svn.code.sf.net/p/line6linux/code/driver/trunk/:
svn.latest:
- target: /opt/Line6.SVN
You can manage text file:
root@salt-master:/srv/salt# cat /srv/salt/motd.sls
motd_perms:
file.managed:
- name: /etc/motd
- mode: 644
motd_quote:
file.append:
- name: /etc/motd
- text: "Of all smells, bread; of all tastes, salt."
We can activate state tree by the following command:
root@salt-master:/srv/salt# salt '*' state.highstate
salt-minion2.test.local:
----------
State: - file
Name: /etc/motd
Function: managed
Result: True
Comment: File /etc/motd is in the correct state
Changes:
----------
State: - file
Name: /etc/motd
Function: append
Result: True
Comment: Appended 0 lines
Changes:
----------
State: - svn
Name: https://svn.code.sf.net/p/line6linux/code/driver/trunk/
Function: latest
Result: True
Comment: At revision 1072.
Changes:
Summary
------------
Succeeded: 3
Failed: 0
------------
Total: 3
salt-centos:
----------
State: - file
Name: /etc/motd
Function: append
Result: True
Comment: Appended 0 lines
Changes:
----------
State: - file
Name: /etc/motd
Function: managed
Result: True
Comment: File /etc/motd is in the correct state
Changes:
----------
State: - svn
Name: https://svn.code.sf.net/p/line6linux/code/driver/trunk/
Function: latest
Result: True
Comment: At revision 1072.
Changes:
Summary
------------
Succeeded: 3
Failed: 0
------------
Total: 3
You can have a StateTree requst to the SaltMaster server from a Minion, like this:
[root@salt-centos ~]# salt-call state.highstate -l debug
Turninig off all minions:
root@salt-master:~# salt '*' cmd.run "poweroff"
salt-centos: salt-minion2.test.local: salt-minion1.test.local:
Have a luck!