diff options
-rw-r--r-- | manifests/database.pp | 32 | ||||
-rw-r--r-- | manifests/params.pp | 6 | ||||
-rw-r--r-- | templates/database.conf.erb | 6 | ||||
-rw-r--r-- | tests/database.pp | 9 |
4 files changed, 53 insertions, 0 deletions
diff --git a/manifests/database.pp b/manifests/database.pp new file mode 100644 index 0000000..183c870 --- /dev/null +++ b/manifests/database.pp @@ -0,0 +1,32 @@ +class rsyslog::database ( + $backend, + $server, + $database, + $username, + $password, +) inherits rsyslog { + + $db_module = "om${backend}" + $db_conf = "${rsyslog::params::rsyslog_d}${backend}.conf" + + case $backend { + mysql: { $db_package = $rsyslog::params::mysql_package_name } + pgsql: { $db_package = $rsyslog::params::pgsql_package_name } + default: { fail("Unsupported backend: ${backend}. Only MySQL (mysql) and PostgreSQL (pgsql) are supported.") } + } + + package { $db_package: + ensure => $rsyslog::params::package_status, + before => File[$db_conf], + } + + file { $db_conf: + ensure => present, + owner => root, + group => $rsyslog::params::run_group, + mode => '0600', + content => template("${module_name}/database.conf.erb"), + require => Class['rsyslog::config'], + notify => Class['rsyslog::service'], + } +} diff --git a/manifests/params.pp b/manifests/params.pp index 7501a9b..96c0b27 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -3,6 +3,8 @@ class rsyslog::params { debian: { $rsyslog_package_name = 'rsyslog' $relp_package_name = 'rsyslog-relp' + $mysql_package_name = 'rsyslog-mysql' + $pgsql_package_name = 'rsyslog-pgsql' $package_status = 'latest' $rsyslog_d = '/etc/rsyslog.d/' $rsyslog_conf = '/etc/rsyslog.conf' @@ -22,6 +24,8 @@ class rsyslog::params { redhat: { $rsyslog_package_name = 'rsyslog' $relp_package_name = 'rsyslog-relp' + $mysql_package_name = 'rsyslog-mysql' + $pgsql_package_name = 'rsyslog-pgsql' $package_status = 'latest' $rsyslog_d = '/etc/rsyslog.d/' $rsyslog_conf = '/etc/rsyslog.conf' @@ -41,6 +45,8 @@ class rsyslog::params { freebsd: { $rsyslog_package_name = 'sysutils/rsyslog5' $relp_package_name = 'sysutils/rsyslog5-relp' + $mysql_package_name = 'sysutils/rsyslog5-mysql' + $pgsql_package_name = 'sysutils/rsyslog5-pgsql' $package_status = 'present' $rsyslog_d = '/etc/syslog.d/' $rsyslog_conf = '/etc/syslog.conf' diff --git a/templates/database.conf.erb b/templates/database.conf.erb new file mode 100644 index 0000000..174cef2 --- /dev/null +++ b/templates/database.conf.erb @@ -0,0 +1,6 @@ +# File is managed by Puppet + +## Configuration file for rsyslog-<%= backend %> + +$ModLoad <%= db_module %> +*.* :<%= db_module -%>:<%= server -%>,<%= database -%>,<%= username -%>,<%= password %> diff --git a/tests/database.pp b/tests/database.pp new file mode 100644 index 0000000..269be69 --- /dev/null +++ b/tests/database.pp @@ -0,0 +1,9 @@ +include rsyslog + +class { 'rsyslog::database': + backend => 'mysql', + server => 'localhost', + database => 'Syslog', + username => 'rsyslog', + password => 'secret', +} |