123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- .. _state-layers:
- ===================
- State System Layers
- ===================
- The Salt state system is comprised of multiple layers. While using Salt does
- not require an understanding of the state layers, a deeper understanding of
- how Salt compiles and manages states can be very beneficial.
- .. _state-layers-function-call:
- Function Call
- =============
- The lowest layer of functionality in the state system is the direct state
- function call. State executions are executions of single state functions at
- the core. These individual functions are defined in state modules and can
- be called directly via the ``state.single`` command.
- .. code-block:: bash
- salt '*' state.single pkg.installed name='vim'
- .. _state-layers-low-chunk:
- Low Chunk
- =========
- The low chunk is the bottom of the Salt state compiler. This is a data
- representation of a single function call. The low chunk is sent to the state
- caller and used to execute a single state function.
- A single low chunk can be executed manually via the ``state.low`` command.
- .. code-block:: bash
- salt '*' state.low '{name: vim, state: pkg, fun: installed}'
- The passed data reflects what the state execution system gets after compiling
- the data down from sls formulas.
- .. _state-layers-low-state:
- Low State
- =========
- The `Low State` layer is the list of low chunks "evaluated" in order. To see
- what the low state looks like for a :ref:`highstate <running-highstate>`, run:
- .. code-block:: bash
- salt '*' state.show_lowstate
- This will display the raw lowstate in the order which each low chunk will be
- evaluated. The order of evaluation is not necessarily the order of execution,
- since requisites are evaluated at runtime. Requisite execution and evaluation
- is finite; this means that the order of execution can be ascertained with 100%
- certainty based on the order of the low state.
- .. _state-layers-high-data:
- High Data
- =========
- High data is the data structure represented in YAML via SLS files. The High
- data structure is created by merging the data components rendered inside sls
- files (or other render systems). The High data can be easily viewed by
- executing the ``state.show_highstate`` or ``state.show_sls`` functions. Since
- this data is a somewhat complex data structure, it may be easier to read using
- the json, yaml, or pprint outputters:
- .. code-block:: bash
- salt '*' state.show_highstate --out yaml
- salt '*' state.show_sls edit.vim --out pprint
- .. _state-layers-sls:
- SLS
- ===
- Above "High Data", the logical layers are no longer technically required to be
- executed, or to be executed in a hierarchy. This means that how the High data
- is generated is optional and very flexible. The SLS layer allows for many
- mechanisms to be used to render sls data from files or to use the fileserver
- backend to generate sls and file data from external systems.
- The SLS layer can be called directly to execute individual sls formulas.
- .. note::
- SLS Formulas have historically been called "SLS files". This is because a
- single SLS was only constituted in a single file. Now the term
- "SLS Formula" better expresses how a compartmentalized SLS can be expressed
- in a much more dynamic way by combining pillar and other sources, and the
- SLS can be dynamically generated.
- To call a single SLS formula named ``edit.vim``, execute :py:func:`state.apply
- <salt.modules.state.apply_>` and pass ``edit.vim`` as an argument:
- .. code-block:: bash
- salt '*' state.apply edit.vim
- .. _state-layers-highstate:
- HighState
- =========
- Calling SLS directly logically assigns what states should be executed from the
- context of the calling minion. The Highstate layer is used to allow for full
- contextual assignment of what is executed where to be tied to groups of, or
- individual, minions entirely from the master. This means that the environment of
- a minion, and all associated execution data pertinent to said minion, can be
- assigned from the master without needing to execute or configure anything on
- the target minion. This also means that the minion can independently retrieve
- information about its complete configuration from the master.
- To execute the :ref:`highstate <running-highstate>` use :py:func:`state.apply
- <salt.modules.state.apply_>`:
- .. code-block:: bash
- salt '*' state.apply
- .. _state-layers-orchestrate:
- Orchestrate
- ===========
- The orchestrate layer expresses the highest functional layer of Salt's automated
- logic systems. The Overstate allows for stateful and functional orchestration
- of routines from the master. The orchestrate defines in data execution stages
- which minions should execute states, or functions, and in what order using
- requisite logic.
|