diff -r a2342f26c9de -r b0b56e0f8c7f dev/provisioning/modules/datacat/manifests/init.pp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/provisioning/modules/datacat/manifests/init.pp Fri Jan 15 15:35:00 2016 +0100 @@ -0,0 +1,95 @@ +# Definition: datacat +# +# This definition allows you to declare datacat managed files. +# +# Parameters: +# All parameters are as for the file type, with the addition of a $template +# parameter which is a path to a template to be used as the content of the +# file. +# +# Sample Usage: +# datacat { '/etc/motd': +# owner => 'root', +# group => 'root, +# template => 'motd/motd.erb', +# } +# +define datacat( + $ensure = 'file', + $template = undef, + $template_body = undef, + $collects = [], + $backup = undef, + $checksum = undef, + $force = undef, + $group = undef, + $owner = undef, + $mode = undef, + $path = $title, + $replace = undef, + $selinux_ignore_defaults = undef, + $selrange = undef, + $selrole = undef, + $seltype = undef, + $seluser = undef, + $show_diff = 'UNSET' +) { + if $show_diff != 'UNSET' { + if versioncmp($settings::puppetversion, '3.2.0') >= 0 { + File { show_diff => $show_diff } + } else { + warning('show_diff not supported in puppet prior to 3.2, ignoring') + } + } + + # we could validate ensure by simply passing it to file, but unfortunately + # someone could try to be smart and pass 'directory', so we only allow a limited range + if $ensure != 'absent' and $ensure != 'present' and $ensure != 'file' { + fail("Datacat[${title}] invalid value for ensure") + } + + if $ensure == 'absent' { + file { $title: + ensure => $ensure, + path => $path, + backup => $backup, + force => $force, + } + } else { + file { $title: + path => $path, + backup => $backup, + checksum => $checksum, + content => "To be replaced by datacat_collector[${title}]\n", + force => $force, + group => $group, + mode => $mode, + owner => $owner, + replace => $replace, + selinux_ignore_defaults => $selinux_ignore_defaults, + selrange => $selrange, + selrole => $selrole, + seltype => $seltype, + seluser => $seluser, + } + + $template_real = $template ? { + undef => 'inline', + default => $template, + } + + $template_body_real = $template_body ? { + undef => template_body($template_real), + default => $template_body, + } + + datacat_collector { $title: + template => $template_real, + template_body => $template_body_real, + target_resource => File[$title], # when we evaluate we modify the private data of this resource + target_field => 'content', + collects => $collects, + before => File[$title], # we want to evaluate before that resource so it can do the work + } + } +}