class sudo::internals { define add_sudoers_fragment ( String[1] $target, String[1] $content, Integer $order, Optional[String[1]] $comment = undef, ) { sudo::internals::ensure_sudoers_file { "${name}": target => $target } $ts = strftime("%s.%N") # include the timestamp to preserve order in the output if execution # is ordered concat::fragment { "${ts}_sudoers_fragment_${target}_${name}": target => "sudoers_file_${target}", content => $content, order => $order, } } define ensure_sudoers_file( String[1] $target, ) { ensure_resource('concat', "sudoers_file_${target}", { tag => "${target}", path => "${sudo::include_directory}/$target", warn => "# THIS FILE IS MANAGED BY PUPPET; CHANGES WILL BE OVERWRITTEN\n", require => File[$sudo::include_directory], } + $sudo::file_defaults, ) } }