Using the --ignore-tags
command line option, it is possible to ignore all resources with particular Puppet tags. This allows dynamic ignoring of wrappers or other resources that are not of interest.
NOTE: This option is separate and distinct from --include-tags
, which controls whether differences in tags themselves will appear as a difference. For more on --include-tags
, consult the options reference.
To use ignored tags, you first need to decide what the name of your tag will be. The standard is ignored_octocatalog_diff
.
When you are writing Puppet code, you can tag a particular resource as being of no interest to octocatalog-diff
.
class foo {
file { '/etc/foo':
ensure => file,
source => 'puppet:///modules/foo/etc/foo',
tag => [ 'ignored_octocatalog_diff' ],
}
}
You can also tag a resource that is a custom defined type.
class foo {
foo::customfile { '/etc/foo':
source => 'puppet:///modules/foo/etc/foo',
tag => [ 'ignored_octocatalog_diff__foo__customfile' ],
}
}
define foo::customfile (
String $source,
) {
file { $name:
ensure => file,
source => $source,
}
}
Finally, you can tag an entire defined type.
class foo {
foo::customfile { '/etc/foo':
source => 'puppet:///modules/foo/etc/foo',
}
}
define foo::customfile (
String $source,
) {
tag 'ignored_octocatalog_diff__foo__customfile'
file { $name:
ensure => file,
source => $source,
}
}
When octocatalog-diff processes the ignore-tag, it will ignore a resource if either of the following is true:
-
The resource has a tag exactly matching the ignore-tag. For the default tag name, this means a resource has the tag
ignored_octocatalog_diff
. -
The resource has a tag that matches the ignore-tag joined to the type with two underscores (where the type is in lower case and non-alphanumeric characters are replaced with underscores). This means that when the ignore-tag is
ignored_octocatalog_diff
, octocatalog-diff would ignore a file resource with a tag ofignored_octocatalog_diff__file
, but would not ignore an exec resource with that same tag.
The reasoning for the second syntax is explained in caveats.
To ignore one tag:
octocatalog-diff --ignore-tags ignored_octocatalog_diff ...
To ignore multiple tags:
octocatalog-diff --ignore-tags ignored_octocatalog_diff --ignore-tags second_tag ...
To disable all ignoring of tags:
octocatalog-diff --no-ignore-tags ...
When you tag a resource or defined type, Puppet will propagate that tag to all descendent resources.
In this example, the tag ignored_octocatalog_diff__foo__customfile
is propagated to the foo::customfile
resource and to the file resource. However, octocatalog-diff will ignore only the foo::customfile
, and will not ignore the file resource.
define foo::customfile (
String $source,
) {
tag 'ignored_octocatalog_diff__foo__customfile'
file { $name:
ensure => file,
source => $source,
}
}
foo::customfile
parameters be ignored, but changes to the file resource would be ignored as well! That's because both foo::customfile
and the file would have the tag ignored_octocatalog_diff
, because the tag set in the defined type propagates to all descendent resources.
define foo::customfile (
String $source,
) {
# DO NOT DO THIS!!!
tag 'ignored_octocatalog_diff'
file { $name:
ensure => file,
source => $source,
}
}