2012-03-07 22:38:43 +00:00
|
|
|
==============
|
|
|
|
Pillar of Salt
|
|
|
|
==============
|
|
|
|
|
|
|
|
Pillar is an interface for Salt designed to offer global values to be
|
|
|
|
distributed to all minions. Pillar data is managed in a similar way to
|
|
|
|
the salt state tree.
|
|
|
|
|
|
|
|
Pillar was added to Salt in version 0.9.8 as an experimental add on.
|
|
|
|
|
|
|
|
Declaring the Master Pillar
|
|
|
|
===========================
|
|
|
|
|
|
|
|
The Salt Master server maintains a pillar_roots setup that matches the
|
|
|
|
structure of the file_roots used in the Salt file server. Like the
|
|
|
|
Salt file server the ``pillar_roots`` option in the master config is based
|
|
|
|
on environments mapping to directories. The pillar data is then mapped to
|
|
|
|
minions based on matchers in a top file which is laid out in the same way
|
|
|
|
as the state top file.
|
|
|
|
|
|
|
|
the configuration for the pillar_roots in the master config is identical in
|
|
|
|
behavior and function as the file_roots configuration:
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
pillar_roots:
|
|
|
|
base:
|
|
|
|
- /srv/pillar
|
|
|
|
|
|
|
|
This example configuration declares that the base environment will be located
|
|
|
|
in the /srv/pillar directory. The top file used matches the name of the top file
|
|
|
|
used for states, and has the same structure:
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
base:
|
|
|
|
'*':
|
|
|
|
- packages
|
|
|
|
|
2012-03-14 04:34:37 +00:00
|
|
|
This simple pillar top file declares that information for all minions can be
|
2012-03-14 04:39:47 +00:00
|
|
|
found in the package's sls file:
|
2012-03-07 22:38:43 +00:00
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
{% if grains['os'] == 'RedHat' %}
|
|
|
|
apache: httpd
|
|
|
|
git: git
|
|
|
|
{% elif grains['os'] == 'Debian' %}
|
|
|
|
apache: apache2
|
|
|
|
git: git-core
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
Now this data can be used from within modules, renderers, state sls files and
|
|
|
|
more via the shared pillar dict:
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
apache:
|
|
|
|
pkg:
|
|
|
|
- installed
|
|
|
|
- name: {{ pillar['apache'] }}
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
git:
|
|
|
|
pkg:
|
|
|
|
- installed
|
|
|
|
- name: {{ pillar['git'] }}
|