# Compound matchers

Compound matcher
  A combination of many target definitions that can be combined with boolean operators.

Compound matchers allow very granular minion targeting using any of Salt's matchers. The default matcher is a `glob` match, just as with CLI and top file matching. To match using anything other than a glob, prefix the match string with the appropriate letter from the table below, followed by an `@` sign.

Letter | Match Type | Example
--- | --- | ---
G | Grains glob | `G@os:Ubuntu`
E | PCRE Minion ID | `E@web\d+\.(dev|qa|prod)\.loc`
P | Grains PCRE | `P@os:(RedHat|Fedora|CentOS)`
L | List of minions | `L@minion1.example.com,minion3.domain.com or bl*.domain.com`
I | Pillar glob | `I@pdata:foobar`
S | Subnet/IP address | `S@192.168.1.0/24` or `S@192.168.1.100`
R | Range cluster | `R@%foo.bar`

Matchers can be joined using boolean `and`, `or`, and `not` operators.

For example, the following string matches all Debian minions with a hostname that begins with `webserv`, as well as any minions that have a hostname which matches the `regular expression` `web-dc1-srv.*`:

    salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.ping

That same example expressed in a top file looks like the following:

    base:
      'webserv* and G@os:Debian or E@web-dc1-srv.*':
        - match: compound
        - webserver

Note that a leading `not` is not supported in compound matches. Instead, something like the following must be done:

    salt -C '* and not G@kernel:Darwin' test.ping

Current Salt release: 0.17.1

#### Previous topic

Node groups

#### Next topic

Batch Size

### Quick search

Enter search terms or a module, class or function name.

### Upcoming SaltStack Events

My conferences on Lanyrd