diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README.md | 29 | ||||
-rw-r--r-- | lib/facter/rsyslog_version.rb | 38 | ||||
-rw-r--r-- | manifests/client.pp | 127 | ||||
-rw-r--r-- | templates/client.conf.erb | 6 | ||||
-rw-r--r-- | templates/rsyslog.conf.erb | 2 |
6 files changed, 128 insertions, 75 deletions
@@ -2,3 +2,4 @@ pkg/ *.swp .forge-releng /spec/fixtures +.DS_Store @@ -19,13 +19,20 @@ Manage rsyslog client and server via Puppet #### Variables and default values
```
class { 'rsyslog::client':
- log_remote => true,
- remote_type => 'tcp',
- log_local => false,
- log_auth_local => false,
- custom_config => undef,
- server => 'log',
- port => '514',
+ log_remote => true,
+ spool_size => '1g',
+ remote_type => 'tcp',
+ remote_forward_format => 'RSYSLOG_ForwardFormat',
+ log_local => false,
+ log_auth_local => false,
+ custom_config => undef,
+ custom_params => undef,
+ server => 'log',
+ port => '514',
+ remote_servers => false,
+ ssl_ca => undef,
+ log_templates => false,
+ actionfiletemplate => false
}
```
for read from file
@@ -149,11 +156,17 @@ The following lists all the class parameters this module accepts. RSYSLOG::CLIENT CLASS PARAMETERS VALUES DESCRIPTION
-------------------------------------------------------------------
log_remote true,false Log Remotely. Defaults to true.
+ spool_size STRING Max size for disk queue if remote server failed. Defaults to '1g'.
remote_type 'tcp','udp' Which protocol to use when logging remotely. Defaults to 'tcp'.
+ remote_forward_format STRING Which forward format for remote servers should be used. Only used if remote_servers is false.
log_local true,false Log locally. Defaults to false.
log_auth_local true,false Just log auth facility locally. Defaults to false.
custom_config STRING Specify your own template to use for client config. Defaults to undef. Example usage: custom_config => 'rsyslog/my_config.erb
- server STRING Rsyslog server to log to. Will be used in the client configuration file.
+ custom_params TODO TODO
+ server STRING Rsyslog server to log to. Will be used in the client configuration file. Only used, if remote_servers is false.
+ port '514' Remote server port. Only used if remote_servers is false.
+ remote_servers Array of hashes Array of hashes with remote servers. See documentation above. Defaults to false.
+ ssl_ca STRING SSL CA file location. Defaults to undef.
log_templates HASH Provides a has defining custom logging templates using the `$template` configuration parameter.
actionfiletemplate STRING If set this defines the `ActionFileDefaultTemplate` which sets the default logging format for remote and local logging.
diff --git a/lib/facter/rsyslog_version.rb b/lib/facter/rsyslog_version.rb new file mode 100644 index 0000000..de8531e --- /dev/null +++ b/lib/facter/rsyslog_version.rb @@ -0,0 +1,38 @@ +# Fact: :syslog_package +# +# Purpose: retrieve installed rsyslog version +# + +Facter.add(:rsyslog_version) do + setcode do + osfamily = Facter.value('osfamily') + case osfamily + when "Debian" + command='/usr/bin/dpkg-query -f \'${Status};${Version};\' -W rsyslog 2>/dev/null' + version = Facter::Util::Resolution.exec(command) + if version =~ /.*install ok installed;([^;]+);.*/ + $1 + else + nil + end + when "RedHat", "Suse" + command='rpm -qa --qf "%{VERSION}" "rsyslog"' + version = Facter::Util::Resolution.exec(command) + if version =~ /^(.+)$/ + $1 + else + nil + end + when "FreeBSD" + command='pkg query %v rsyslog' + version = Facter::Util::Resolution.exec(command) + if version =~ /^(.+)$/ + $1 + else + nil + end + else + nil + end + end +end diff --git a/manifests/client.pp b/manifests/client.pp index f8a2120..193aa33 100644 --- a/manifests/client.pp +++ b/manifests/client.pp @@ -1,63 +1,64 @@ -# == Class: rsyslog::client
-#
-# Full description of class role here.
-#
-# === Parameters
-#
-# [*sample_parameter*]
-# [*spool_size*]
-# [*log_local*]
-# [*log_auth_local*]
-# [*custom_config*]
-# [*custom_params*]
-# [*log_remote*]
-# [*server*]
-# [*remote_type*]
-# [*port*]
-# [*remote_servers*]
-# [*ssl_ca*]
-# [*log_templates*]
-# [*actionfiletemplate*]
-#
-# === Variables
-#
-# === Examples
-#
-# class { 'rsyslog::client': }
-#
-class rsyslog::client (
- $log_remote = true,
- $spool_size = '1g',
- $remote_type = 'tcp',
- $log_local = false,
- $log_auth_local = false,
- $custom_config = undef,
- $custom_params = undef,
- $server = 'log',
- $port = '514',
- $remote_servers = false,
- $ssl_ca = undef,
- $log_templates = false,
- $actionfiletemplate = false
-) inherits rsyslog {
-
- if $custom_config {
- $content_real = template($custom_config)
- } else {
- $content_real = template("${module_name}/client.conf.erb")
- }
-
- rsyslog::snippet { $rsyslog::client_conf:
- ensure => present,
- content => $content_real,
- }
-
- if $rsyslog::ssl and $ssl_ca == undef {
- fail('You need to define $ssl_ca in order to use SSL.')
- }
-
- if $rsyslog::ssl and $remote_type != 'tcp' {
- fail('You need to enable tcp in order to use SSL.')
- }
-
-}
+# == Class: rsyslog::client +# +# Full description of class role here. +# +# === Parameters +# +# [*log_remote*] +# [*spool_size*] +# [*remote_type*] +# [*remote_forward_format*] +# [*log_local*] +# [*log_auth_local*] +# [*custom_config*] +# [*custom_params*] +# [*server*] +# [*port*] +# [*remote_servers*] +# [*ssl_ca*] +# [*log_templates*] +# [*actionfiletemplate*] +# +# === Variables +# +# === Examples +# +# class { 'rsyslog::client': } +# +class rsyslog::client ( + $log_remote = true, + $spool_size = '1g', + $remote_type = 'tcp', + $remote_forward_format = 'RSYSLOG_ForwardFormat', + $log_local = false, + $log_auth_local = false, + $custom_config = undef, + $custom_params = undef, + $server = 'log', + $port = '514', + $remote_servers = false, + $ssl_ca = undef, + $log_templates = false, + $actionfiletemplate = false +) inherits rsyslog { + + if $custom_config { + $content_real = template($custom_config) + } else { + $content_real = template("${module_name}/client.conf.erb") + } + + rsyslog::snippet { $rsyslog::client_conf: + ensure => present, + content => $content_real, + } + + if $rsyslog::ssl and $ssl_ca == undef { + fail('You need to define $ssl_ca in order to use SSL.') + } + + if $rsyslog::ssl and $remote_type != 'tcp' { + fail('You need to enable tcp in order to use SSL.') + } + +} diff --git a/templates/client.conf.erb b/templates/client.conf.erb index 5733972..d72e080 100644 --- a/templates/client.conf.erb +++ b/templates/client.conf.erb @@ -72,9 +72,9 @@ $ActionSendStreamDriverAuthMode anon # Log to remote syslog server using <%= scope.lookupvar('rsyslog::client::remote_type') %> <% if scope.lookupvar('rsyslog::client::remote_type') == 'tcp' -%> -*.* @@<%= scope.lookupvar('rsyslog::client::server') -%>:<%= scope.lookupvar('rsyslog::client::port') -%>;RSYSLOG_ForwardFormat +*.* @@<%= scope.lookupvar('rsyslog::client::server') -%>:<%= scope.lookupvar('rsyslog::client::port') -%>;<%= scope.lookupvar('remote_forward_format') -%> <% else -%> -*.* @<%= scope.lookupvar('rsyslog::client::server') -%>:<%= scope.lookupvar('rsyslog::client::port') -%>;RSYSLOG_ForwardFormat +*.* @<%= scope.lookupvar('rsyslog::client::server') -%>:<%= scope.lookupvar('rsyslog::client::port') -%>;<%= scope.lookupvar('remote_forward_format') -%> <% end -%> <% end -%> <% if scope.lookupvar('rsyslog::client::log_auth_local') or scope.lookupvar('rsyslog::client::log_local') -%> @@ -165,7 +165,7 @@ mail.* -/var/log/maillog cron.* /var/log/cron # Everybody gets emergency messages -<% if scope.lookupvar('rsyslog::v8plus') == true -%> +<% if @rsyslog_version.split('.')[0].to_i >= 8 -%> *.emerg :omusrmsg:* <% else -%> *.emerg * diff --git a/templates/rsyslog.conf.erb b/templates/rsyslog.conf.erb index 0339ef9..446c91e 100644 --- a/templates/rsyslog.conf.erb +++ b/templates/rsyslog.conf.erb @@ -35,7 +35,7 @@ $IncludeConfig <%= scope.lookupvar('rsyslog::rsyslog_d') -%>*.conf # # Emergencies are sent to everybody logged in. # -<% if scope.lookupvar('rsyslog::v8plus') == true -%> +<% if @rsyslog_version.split('.')[0].to_i >= 8 -%> *.emerg :omusrmsg:* <% else -%> *.emerg * |