diff --git a/README.md b/README.md index 9142188..9137a60 100644 --- a/README.md +++ b/README.md @@ -365,6 +365,7 @@ Object types: * [icinga2::object::applynotificationtohost](#icinga2objectapplynotificationtohost) * [icinga2::object::applynotificationtoservice](#icinga2objectapplynotificationtoservice) * [icinga2::object::checkcommand](#icinga2objectcheckcommand) +* [icinga2::object::compatlogger](#icinga2objectcompatlogger) * [icinga2::object::eventcommand](#icinga2objecteventcommand) * [icinga2::object::externalcommandlistener](#icinga2objectexternalcommandlistener) * [icinga2::object::host](#icinga2objecthost) @@ -506,6 +507,20 @@ Available parameters are: * `target_file_group` * `target_file_mode` +####`icinga2::object::compatlogger` + +The `compatlogger` defined type can create `compatlogger` objects. + +
+icinga2::object::compatlogger { 'daily-log':
+  log_dir         => '/var/log/icinga2/compat',
+  rotation_method => 'DAILY'
+}
+
+ +Both patameters as optionals. The parameter `rotation_method` can one of `HOURLY`, `DAILY`, `WEEKLY` or `MONTHY`. +See [CompatLogger](http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/configuring-icinga2#objecttype-compatlogger) on [docs.icinga.org](http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc) for a full list of parameters. + ####`icinga2::object::eventcommand` The `eventcommand` defined type can create `eventcommand` objects. diff --git a/manifests/object/compatlogger.pp b/manifests/object/compatlogger.pp new file mode 100644 index 0000000..a0dc5ee --- /dev/null +++ b/manifests/object/compatlogger.pp @@ -0,0 +1,51 @@ +# == Defined type: icinga2::object::compatlogger +# +# This is a defined type for Icinga 2 apply objects that create Compat Logger +# See the following Icinga 2 doc page for more info: +# http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/configuring-icinga2#objecttype-compatlogger +# +# === Parameters +# +# See the inline comments. +# + +define icinga2::object::compatlogger ( + $ensure = 'file', + $object_compatloggername = $name, + $log_dir = undef, + $rotation_method = undef, + $target_dir = '/etc/icinga2/objects/compatloggers', + $target_file_name = "${name}.conf", + $target_file_ensure = file, + $target_file_owner = 'root', + $target_file_group = 'root', + $target_file_mode = '0644' +) { + + #Do some validation of the class' parameters: + if $object_compatloggername { + validate_string($object_compatloggername) + } + if $log_dir { + validate_string($log_dir) + } + if $rotation_method { + validate_string($rotation_method) + } + validate_string($target_dir) + validate_string($target_file_name) + validate_string($target_file_owner) + validate_string($target_file_group) + validate_re($target_file_mode, '^\d{4}$') + + + file {"${target_dir}/${target_file_name}": + ensure => $target_file_ensure, + owner => $target_file_owner, + group => $target_file_group, + mode => $target_file_mode, + content => template('icinga2/object_compatlogger.conf.erb'), + notify => Service['icinga2'], + } + +} diff --git a/templates/object_compatlogger.conf.erb b/templates/object_compatlogger.conf.erb new file mode 100644 index 0000000..17004f8 --- /dev/null +++ b/templates/object_compatlogger.conf.erb @@ -0,0 +1,24 @@ +/** +* WARNING: This CompatLogger definition is automatically generated by Puppet. +* ANY MANUAL CHANGES TO IT WILL GET OVERWRITTEN! +*/ + +/** +* A CompatLogger definition. You can create your own configuration files +* in the conf.d directory (e.g. one per commnand). By default all *.conf +* files in this directory are included. +* +*/ + +library "compat" + +object CompatLogger "<%= @object_compatloggername %>" { + <%#- If any of the @ parameters are undefined, don't print anything for them: -%> + <%- if @log_dir -%> + + log_dir = "<%= @log_dir %>" + <%- end -%> + <%- if @rotation_method -%> + rotation_method = "<%= @rotation_method %>" + <%- end -%> +}