The Salt fileserver supports multiple environments, allowing for SLS files and other files to be isolated for better organization.
For the default backend (called roots
),
environments are defined using the roots
option.
Other backends (such as gitfs
) define
environments in their own ways. For a list of available fileserver backends,
see here.
Any salt://
file URL can specify its fileserver environment using a
querystring syntax, like so:
salt://path/to/file?saltenv=foo
In Reactor configurations, this method must be used to pull
files from an environment other than base
.
Minions can be instructed which environment to use both globally, and for a single state, and multiple methods for each are available:
A minion can be pinned to an environment using the environment
option in the minion config file.
Additionally, the environment can be set for a single call to the following functions:
state.apply
Note
When the saltenv
parameter is used to trigger a highstate using either state.apply
or state.highstate
, only states from that environment will be
applied.
Within an individual state, there are two ways of specifying the environment.
The first is to add a saltenv
argument to the state. This example will pull
the file from the config
environment:
/etc/foo/bar.conf:
file.managed:
- source: salt://foo/bar.conf
- user: foo
- mode: 600
- saltenv: config
Another way of doing the same thing is to use the querystring syntax described above:
/etc/foo/bar.conf:
file.managed:
- source: salt://foo/bar.conf?saltenv=config
- user: foo
- mode: 600
Note
Specifying the environment using either of the above methods is only
necessary in cases where a state from one environment needs to access files
from another environment. If the SLS file containing this state was in the
config
environment, then it would look in that environment by default.