summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--manifests/database.pp32
-rw-r--r--manifests/params.pp6
-rw-r--r--templates/database.conf.erb6
-rw-r--r--tests/database.pp9
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',
+}