2012-11-20 05:51:19 +00:00
|
|
|
================
|
|
|
|
OverState System
|
|
|
|
================
|
|
|
|
|
|
|
|
Often servers need to be set up and configured in a specific order, and systems
|
|
|
|
should only be set up if systems earlier in the sequence has been set up
|
|
|
|
without any issues.
|
|
|
|
|
2012-12-16 07:25:05 +00:00
|
|
|
The 0.11.0 release of Salt addresses this problem with a new layer in the state
|
2012-11-20 05:51:19 +00:00
|
|
|
system called the `Over State`. The concept of the `Over State` is managed on
|
|
|
|
the master, a series of state executions is controlled from the master and
|
|
|
|
executed in order. If an execution requires that another execution first run
|
|
|
|
without problems then the state executions will stop.
|
|
|
|
|
|
|
|
The `Over State` system is used to orchestrate deployment in a smooth and
|
|
|
|
reliable way across multiple systems in small to large environments.
|
|
|
|
|
|
|
|
The Over State SLS
|
|
|
|
==================
|
|
|
|
|
|
|
|
The overstate system is managed by an sls file located in the root of an
|
|
|
|
environment. This file uses a data structure like all sls files.
|
|
|
|
|
|
|
|
The overstate sls file configures an unordered list of stages, each stage
|
|
|
|
defines the minions to execute on and can define what sls files to run
|
|
|
|
or to execute a state.highstate.
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
mysql:
|
|
|
|
match: db*
|
|
|
|
sls:
|
|
|
|
- mysql.server
|
|
|
|
- drbd
|
|
|
|
webservers:
|
|
|
|
match: web*
|
|
|
|
require:
|
|
|
|
- mysql
|
|
|
|
all:
|
|
|
|
match: '*'
|
|
|
|
require:
|
|
|
|
- mysql
|
|
|
|
- webservers
|
|
|
|
|
2013-01-22 15:02:39 +00:00
|
|
|
The above defined over state will execute the mysql stage first because it is
|
2012-11-20 05:51:19 +00:00
|
|
|
required by the webservers stage. The webservers stage will then be executed
|
|
|
|
only if the mysql stage executes without any issues. The webservers stage
|
|
|
|
will execute state.highstate on the matched minions, while the mysql stage
|
|
|
|
will execute state.sls with the named sls files.
|
|
|
|
|
|
|
|
Finally the all stage will execute state.highstate on all systems only if the
|
2012-12-27 16:55:15 +00:00
|
|
|
mysql and webservers stages complete without failures. The overstate system
|
|
|
|
checks for any states that return a result of `False`, if the run has any
|
|
|
|
`False` returns then the overstate will quit.
|
2012-11-20 06:28:57 +00:00
|
|
|
|
2013-05-28 04:44:34 +00:00
|
|
|
Adding Functions To Overstate
|
|
|
|
=============================
|
|
|
|
|
|
|
|
In 0.15.0 the ability to execute module functions directly in the overstate
|
|
|
|
was added. Functions are called as a stage with the function key:
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
http:
|
|
|
|
function:
|
|
|
|
pkg.install:
|
|
|
|
- http
|
|
|
|
|
|
|
|
|
|
|
|
The list of function arguments are passed after the declared function.
|
|
|
|
Requisites only functions properly if the given function supports returning
|
|
|
|
a custom return code.
|
|
|
|
|
2012-11-20 06:28:57 +00:00
|
|
|
Executing the Over State
|
|
|
|
========================
|
|
|
|
|
|
|
|
The over state can be executed from the salt-run command, calling the
|
|
|
|
state.over runner function. The function will by default look in the base
|
|
|
|
environment for the overstate.sls file:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
salt-run state.over
|
|
|
|
|
|
|
|
To specify the location of the overstate file and the environment to pull from
|
|
|
|
pass the arguments to the salt-run command:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
salt-run state.over base /root/overstate.sls
|
|
|
|
|
|
|
|
Remember, that these calls are made on the master.
|