Nodegroups are declared using a compound target specification. The compound target documentation can be found here.
The nodegroups
master config file parameter is used to define
nodegroups. Here's an example nodegroup configuration within
/etc/salt/master
:
nodegroups:
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
group2: 'G@os:Debian and foo.domain.com'
group3: 'G@os:Debian and N@group1'
group4:
- 'G@foo:bar'
- 'or'
- 'G@foo:baz'
Note
The L
within group1 is matching a list of minions, while the G
in
group2 is matching specific grains. See the compound matchers documentation for more details.
As of the 2017.7.0 release of Salt, group names can also be prepended with a dash. This brings the usage in line with many other areas of Salt. For example:
nodegroups:
- group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
New in version 2015.8.0.
Note
Nodegroups can reference other nodegroups as seen in group3
. Ensure
that you do not have circular references. Circular references will be
detected and cause partial expansion with a logged error message.
New in version 2015.8.0.
Compound nodegroups can be either string values or lists of string values. When the nodegroup is A string value will be tokenized by splitting on whitespace. This may be a problem if whitespace is necessary as part of a pattern. When a nodegroup is a list of strings then tokenization will happen for each list element as a whole.
To match a nodegroup on the CLI, use the -N
command-line option:
salt -N group1 test.version
New in version 2019.2.0.
Note
The N@
classifier historically could not be used in compound matches
within the CLI or top file, it was only recognized in the
nodegroups
master config file parameter. As of the 2019.2.0
release, this limitation no longer exists.
To match a nodegroup in your top file, make sure to put - match:
nodegroup
on the line directly following the nodegroup name.
base:
group1:
- match: nodegroup
- webserver
Note
When adding or modifying nodegroups to a master configuration file, the master must be restarted for those changes to be fully recognized.
A limited amount of functionality, such as targeting with -N from the command-line may be available without a restart.
A simple list of minion IDs would traditionally be defined like this:
nodegroups:
group1: L@host1,host2,host3
They can now also be defined as a YAML list, like this:
nodegroups:
group1:
- host1
- host2
- host3
New in version 2016.11.0.