Tags
Tags are useful for collecting resources, analyzing reports, and restricting catalog runs. Resources, classes, and defined type instances can have multiple tags associated with them, and they receive some tags automatically.
Tag names
For information about the characters allowed in tag names, see reserved words and acceptable names.
Assigning tags to resources
-
Its resource type.
-
The full name of the class or defined type in which the resource was declared.
-
Every namespace segment of the resource’s class or defined type.
For example, a file resource in class apache::ssl
is automatically
assigned the tags file
, apache::ssl
, apache
, and ssl
. Do not manually assign tags with names that are the same as these
automatically assigned tags.
Similar to relationships and most metaparameters, tags are passed along by containment. This means a resource receives all of the tags from the class and/or defined type that contains it. In the case of nested containment (a class that declares a defined resource, or a defined type that declares other defined resources), a resource receives tags from all of its containers.
The tag
metaparameter accepts a single tag or an array, and these are
added to the tags the resource already has. A tag
can also be used with normal resources, defined resources, and classes (when using the
resource-like declaration syntax).
Since containment applies to tags, the example below assigns
the us_mirror1
and us_mirror2
tags to every resource contained
by Apache::Vhost['docs.puppetlabs.com']
.
apache::vhost {'docs.puppetlabs.com':
port => 80,
tag => ['us_mirror1', 'us_mirror2'],
}
To
assign tags to the surrounding container and all of the resources it contains,
use the tag
function inside a class definition or
defined type. The example below assigns the us_mirror1
and us_mirror2
tags to all of the defined
resources being declared in the class role::public_web
, as well as to all of the resources each of
them
contains.class role::public_web {
tag 'us_mirror1', 'us_mirror2'
apache::vhost {'docs.puppetlabs.com':
port => 80,
}
ssh::allowgroup {'www-data': }
@@nagios::website {'docs.puppetlabs.com': }
}
Using tags
tags
setting to
apply a subset of the node’s catalog. This is useful when refactoring
modules, and enables you to apply a single class on a test node.tags
setting can be set in puppet.conf
to restrict the catalog, or on the command line
to temporarily restrict it. The value of the tags
setting should be a comma-separated list of tags,
with no spaces between
tags:$ sudo puppet agent --test --tags apache,us_mirror1
The tagmail module sends emails to arbitrary email addresses
whenever resources with certain tags are changed.Resource tags
are available to custom report handlers and out-of-band report processors:
Each Puppet::Resource::Status
object and Puppet::Util::Log
object has
a tags
key
whose value is an array containing every tag for the resource in question.