The match module allows for match routines to be run and determine target specs
Return True if the minion ID matches the given compound target
Specify the minion ID to match against the target expression
New in version 2014.7.0.
CLI Example:
salt '*' match.compound 'L@cheese,foo and *'
Return True if the minion matches the given data target
CLI Example:
salt '*' match.data 'spam:eggs'
Return the first match in a dictionary of target patterns
New in version 2014.7.0.
CLI Example:
salt '*' match.filter_by '{foo*: Foo!, bar*: Bar!}' minion_id=bar03
Pillar Example:
# Filter the data for the current minion into a variable:
{% set roles = salt['match.filter_by']({
'web*': ['app', 'caching'],
'db*': ['db'],
}, minion_id=grains['id'], default='web*') %}
# Make the filtered data available to Pillar:
roles: {{ roles | yaml() }}
Return True if the minion ID matches the given glob target
Specify the minion ID to match against the target expression
New in version 2014.7.0.
CLI Example:
salt '*' match.glob '*'
Return True if the minion matches the given grain target. The delimiter
argument can be used to specify a different delimiter.
CLI Example:
salt '*' match.grain 'os:Ubuntu'
salt '*' match.grain 'ipv6|2001:db8::ff00:42:8329' delimiter='|'
Specify an alternate delimiter to use when traversing a nested dict
New in version 2014.7.0.
Specify an alternate delimiter to use when traversing a nested dict
New in version 0.16.4.
Deprecated since version 2015.8.0.
Return True if the minion matches the given grain_pcre target. The
delimiter
argument can be used to specify a different delimiter.
CLI Example:
salt '*' match.grain_pcre 'os:Fedo.*'
salt '*' match.grain_pcre 'ipv6|2001:.*' delimiter='|'
Specify an alternate delimiter to use when traversing a nested dict
New in version 2014.7.0.
Specify an alternate delimiter to use when traversing a nested dict
New in version 0.16.4.
Deprecated since version 2015.8.0.
New in version 3006.0.
Evaluate each pair of arguments up to the last one as a (matcher, value)
tuple, returning value
if matched. If none match, returns the last
argument.
The ifelse
function is like a multi-level if-else statement. It was
inspired by CFEngine's ifelse
function which in turn was inspired by
Oracle's DECODE
function. It must have an odd number of arguments (from
1 to N). The last argument is the default value, like the else
clause in
standard programming languages. Every pair of arguments before the last one
are evaluated as a pair. If the first one evaluates true then the second one
is returned, as if you had used the first one in a compound match
expression. Boolean values can also be used as the first item in a pair,
as it will be translated to a match that will always match ("*") or never
match ("SALT_IFELSE_MATCH_NOTHING") a target system.
This is essentially another way to express the filter_by
functionality
in way that's familiar to CFEngine or Oracle users. Consider using
filter_by
unless this function fits your workflow.
CLI Example:
salt '*' match.ifelse 'foo*' 'Foo!' 'bar*' 'Bar!' minion_id=bar03
Return True if the minion matches the given ipcidr target
CLI Example:
salt '*' match.ipcidr '192.168.44.0/24'
delimiter Pillar Example:
'172.16.0.0/12':
- match: ipcidr
- nodeclass: internal
Return True if the minion ID matches the given list target
Specify the minion ID to match against the target expression
New in version 2014.7.0.
CLI Example:
salt '*' match.list 'server1,server2'
Return True if the minion ID matches the given pcre target
Specify the minion ID to match against the target expression
New in version 2014.7.0.
CLI Example:
salt '*' match.pcre '.*'
Return True if the minion matches the given pillar target. The
delimiter
argument can be used to specify a different delimiter.
CLI Example:
salt '*' match.pillar 'cheese:foo'
salt '*' match.pillar 'clone_url|https://github.com/saltstack/salt.git' delimiter='|'
Specify an alternate delimiter to use when traversing a nested dict
New in version 2014.7.0.
Specify an alternate delimiter to use when traversing a nested dict
New in version 0.16.4.
Deprecated since version 2015.8.0.
Return True if the minion matches the given pillar_pcre target. The
delimiter
argument can be used to specify a different delimiter.
CLI Example:
salt '*' match.pillar_pcre 'cheese:(swiss|american)'
salt '*' match.pillar_pcre 'clone_url|https://github\.com/.*\.git' delimiter='|'
Specify an alternate delimiter to use when traversing a nested dict
New in version 2014.7.0.
Specify an alternate delimiter to use when traversing a nested dict
New in version 0.16.4.
Deprecated since version 2015.8.0.
Search a dictionary of target strings for matching targets
This is the inverse of match.filter_by
and allows matching values instead of
matching keys. A minion can be matched by multiple entries.
New in version 2017.7.0.
CLI Example:
salt '*' match.search_by '{web: [node1, node2], db: [node2, node]}'
Pillar Example:
{% set roles = salt.match.search_by({
'web': ['G@os_family:Debian not nodeX'],
'db': ['L@node2,node3 and G@datacenter:west'],
'caching': ['node3', 'node4'],
}) %}
# Make the filtered data available to Pillar:
roles: {{ roles | yaml() }}