From ef5197d78177ad6c1621e55799a39e99e0751b6a Mon Sep 17 00:00:00 2001 From: James Edwards Date: Wed, 9 Jul 2014 12:41:08 +0100 Subject: Allow option to avoid loading imfile module twice. This throws a warning with version 8 of rsyslog. The best way to use imfile is to define the module list in extra_modules. However, if you still try to create an imfile without adding that it will still work the old way (adding modload imfile to the begining of the imfile). --- manifests/imfile.pp | 4 +++- manifests/init.pp | 5 +++++ manifests/modload.pp | 17 +++++++++++++++++ manifests/params.pp | 8 ++++++++ templates/imfile.erb | 3 +++ templates/modload.erb | 3 +++ 6 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 manifests/modload.pp create mode 100644 templates/modload.erb diff --git a/manifests/imfile.pp b/manifests/imfile.pp index 28665f8..bd0afa3 100644 --- a/manifests/imfile.pp +++ b/manifests/imfile.pp @@ -29,10 +29,12 @@ define rsyslog::imfile( $polling_interval = 10, $file_severity = 'notice', $run_file_monitor = true, - $persist_state_interval = 0 + $persist_state_interval = 0, ) { + include rsyslog + $extra_modules = $rsyslog::extra_modules file { "${rsyslog::rsyslog_d}${name}.conf": ensure => file, diff --git a/manifests/init.pp b/manifests/init.pp index 0c57a84..e0f1727 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -39,8 +39,13 @@ class rsyslog ( $modules = $rsyslog::params::modules, $preserve_fqdn = $rsyslog::params::preserve_fqdn, $max_message_size = $rsyslog::params::max_message_size + $extra_modules = $rsyslog::params::extra_modules ) inherits rsyslog::params { class { 'rsyslog::install': } class { 'rsyslog::config': } + if $extra_modules != [] { + class { 'rsyslog::modload': } + } class { 'rsyslog::service': } + } diff --git a/manifests/modload.pp b/manifests/modload.pp new file mode 100644 index 0000000..8022cf0 --- /dev/null +++ b/manifests/modload.pp @@ -0,0 +1,17 @@ +# == Class: rsyslog::modload +# + +class rsyslog::modload ( + $modload_filename = '10-modload.conf', +) + { + file { "${rsyslog::rsyslog_d}$modload_filename": + ensure => file, + owner => 'root', + group => $rsyslog::run_group, + content => template('rsyslog/modload.erb'), + require => Class['rsyslog::install'], + notify => Class['rsyslog::service'], + } + } + diff --git a/manifests/params.pp b/manifests/params.pp index 904148c..9161f3e 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -47,6 +47,8 @@ class rsyslog::params { $preserve_fqdn = false $service_hasrestart = true $service_hasstatus = true + $extra_modules = [] + } redhat: { if $::operatingsystem == 'Amazon' { @@ -121,6 +123,7 @@ class rsyslog::params { $preserve_fqdn = false $service_hasrestart = true $service_hasstatus = true + $extra_modules = [] } suse: { $rsyslog_package_name = 'rsyslog' @@ -149,6 +152,8 @@ class rsyslog::params { '#$ModLoad immark # provides --MARK-- message capability', ] } + $extra_modules = [] + } freebsd: { $rsyslog_package_name = 'sysutils/rsyslog5' $relp_package_name = 'sysutils/rsyslog5-relp' @@ -181,6 +186,7 @@ class rsyslog::params { $preserve_fqdn = false $service_hasrestart = true $service_hasstatus = true + $extra_modules = [] } default: { @@ -217,6 +223,8 @@ class rsyslog::params { $preserve_fqdn = false $service_hasrestart = true $service_hasstatus = true + $extra_modules = [] + } default: { fail("The ${module_name} module is not supported on ${::osfamily}/${::operatingsystem}.") diff --git a/templates/imfile.erb b/templates/imfile.erb index 8b24edb..4a11c72 100644 --- a/templates/imfile.erb +++ b/templates/imfile.erb @@ -1,4 +1,7 @@ +<% if @extra_modules.empty?() or !@extra_modules.include?('imfile') -%> $ModLoad imfile +<% end -%> + $InputFileName <%= @file_name %> $InputFileTag <%= @file_tag %> diff --git a/templates/modload.erb b/templates/modload.erb new file mode 100644 index 0000000..a14a612 --- /dev/null +++ b/templates/modload.erb @@ -0,0 +1,3 @@ +<% @extra_modules.each do |mod| -%> +$ModLoad <%= mod %> +<% end -%> -- cgit v1.2.3