# Requesting Files from Specific Environments

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.

## Querystring Syntax

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`.

## In States

Minions can be instructed which environment to use both globally, and for a single state, and multiple methods for each are available:

### Globally

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`

- `state.highstate`

- `state.sls`

- `state.top`

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.

### On a Per-State Basis

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.