Puppet resource collectors can be used to override resources. Although it should be used sparingly, this feature is incredibly useful if you need to change a resource declared in a module or want to conditionally set attribute values.
Example overwriting a managed resource:
File<|title == '/etc/some/config'|> {
ensure => file,
owner => 0,
content => 'Some content',
}
Example to conditionally set attribute values:
case $facts[os][family] {
'Debian': {
Service<|title == 'systemd-timesyncd'|> {
ensure => stopped,
}
}
'RedHat': {
Service<|title == 'systemd-timesyncd'|> {
ensure => running,
}
}
}
service { 'systemd-timesyncd':
enable => true,
}