Skip to content

Commit

Permalink
Merge pull request #49 from ccin2p3/drop-centos
Browse files Browse the repository at this point in the history
  • Loading branch information
smortex authored Jan 15, 2025
2 parents da14b31 + 9782649 commit 340bbd6
Show file tree
Hide file tree
Showing 34 changed files with 104 additions and 108 deletions.
22 changes: 10 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ This module will manage the pattern databases of *syslog-ng* by using existing f

### What patterndb affects

Depending on the top-level configuration variables `$base_dir` and `$temp_dir`, this module will manage and execute the following elements in order:
Depending on the top-level configuration variables `$cache_dir`, this module will manage and execute the following elements in order:

0. (OPTIONAL) Manage package `syslog-ng`
1. Manage `$base_dir/etc/syslog-ng/patterndb.d` recursively
1. Manage `/etc/syslog-ng/patterndb.d` recursively
2. Manage the contents of the above directory using [existing](#defined-type-patterndbrawruleset) or [generated](#defined-type-patterndbsimpleruleset) patterndb *ruleset* files
3. Merge the contents of the latter using `pdbtool` into a temporary file `${temp_dir}/syslog-ng/patterndb/${parser}.xml` where `$parser` is the name of the *patterndb* (you can have as many as you want, *e.g.* for *staged parsing*.
3. Merge the contents of the latter using `pdbtool` into a temporary file `${cache_dir}/syslog-ng/patterndb/${parser}.xml` where `$parser` is the name of the *patterndb* (you can have as many as you want, *e.g.* for *staged parsing*.
4. (OPTIONAL) Test the resulting patterndbs
5. Deploy the temporary files into `${base_dir}/var/lib/syslog-ng/patterndb/${parser}.xml`
5. Deploy the temporary files into `/var/lib/syslog-ng/patterndb/${parser}.xml`

Reloading of the *syslog-ng* daemon is not being taken care of, as the latter already does that on its own by polling the *patterndb* file for change.

Expand Down Expand Up @@ -82,7 +82,6 @@ class { "patterndb": }
... or overriding paths
```puppet
class { "patterndb":
$base_dir => "/",
$temp_dir => "/tmp"
}
```
Expand Down Expand Up @@ -142,12 +141,11 @@ This class will manage the following *resources*:

* `Package[$package_name]` if `$manage_package` is set to `true`.
* `File[$temp_dir]` as a directory.
* `File["${base_dir}/etc/syslog-ng/patterndb.d"]` recursively, purging unknown files.
* `File["${base_dir}/var/lib/syslog-ng/patterndb/${parser}.xml"]` for each `$parser` (defaults to `'default'`)
* `File["$/etc/syslog-ng/patterndb.d"]` recursively, purging unknown files.
* `File["/var/lib/syslog-ng/patterndb/${parser}.xml"]` for each `$parser` (defaults to `'default'`)

#### Optional Parameters

* `$base_dir` Top level directory for storing resources. Defaults to `'/'`
* `$temp_dir` Temporary directory for various components. Defaults to `'/tmp/syslog-ng'`
* `$package_name` Name of the `syslog-ng` package. Defaults to the OS shipped
* `$manage_package` Boolean to control the management of the package. Defaults to `true`
Expand Down Expand Up @@ -266,11 +264,11 @@ Notice: Applied catalog in 1.33 seconds
If using the defaults, and only one *pattern parser*, you probably won't need to define this resource, as it will get automatically created for you when defining a *ruleset*.
This resource represents a *patterndb parser*, which is eventually materialized by a *File puppet resource*:
```puppet
File["${base_dir}/var/lib/syslog-ng/patterndb/${name}.xml"]
File["/var/lib/syslog-ng/patterndb/${name}.xml"]
```

This *File* is generated by merging all defined *ruleset resources*, which come in two forms: [raw](#defined-type-patterndbrawruleset) and [simple](#defined-type-patterndbsimpleruleset).
Merging is handled under the hood by using `pdbtool merge` which creates a new *patterndb parser* in the `${temp_dir}` directory. Testing of the merged *parser* is optionally handled using `pdbtool test`. If this is a success, the merged file is then being deployed into the definitive destination at `${base_dir}/var/lib/syslog-ng/patterndb/${name}.xml`.
Merging is handled under the hood by using `pdbtool merge` which creates a new *patterndb parser* in the `${temp_dir}` directory. Testing of the merged *parser* is optionally handled using `pdbtool test`. If this is a success, the merged file is then being deployed into the definitive destination at `/var/lib/syslog-ng/patterndb/${name}.xml`.

#### Optional Parameters

Expand Down Expand Up @@ -300,7 +298,7 @@ patterndb::parser { 'default':
Describes a *resultset* using *XML* content. Use only if you have existing *pdb* files. The use of [`patterndb::simple::ruleset`](#defined-type-patterndbsimpleruleset) is highly encouraged otherwise.
This type will define the following *puppet resource*:
```puppet
File["${base_dir}/etc/syslog-ng/patterndb.d/${parser}/${name}.pdb"]
File["/etc/syslog-ng/patterndb.d/${parser}/${name}.pdb"]
```

#### Parameters
Expand Down Expand Up @@ -361,7 +359,7 @@ patterndb::raw::ruleset { 'ruleset_for_pdb_2':
Describes a *ruleset* using *puppet code*.
Like its sibling [`patterndb::raw::ruleset`](#defined-type-patterndbrawruleset), this type will define the following *puppet resource*:
```puppet
File["${base_dir}/etc/syslog-ng/patterndb.d/${parser}/${name}.pdb"]
File["/etc/syslog-ng/patterndb.d/${parser}/${name}.pdb"]
```

Additional internal resources can be created, depending on the parameters:
Expand Down
6 changes: 3 additions & 3 deletions data/default.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
patterndb::base_dir: /
patterndb::temp_dir: /tmp/syslog-ng
patterndb::package_name: false
patterndb::manage_package: true
patterndb::package_name: syslog-ng
patterndb::syslogng_modules: []
patterndb::use_hiera: false
patterndb::_manage_top_dirs: true
patterndb::test_before_deploy: &test_before_deploy true
patterndb::parser::test_before_deploy: *test_before_deploy

patterndb::config_dir: /etc/syslog-ng/patterndb.d
patterndb::var_dir: /var/lib/syslog-ng
2 changes: 2 additions & 0 deletions data/osfamily/Debian.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
patterndb::package_name: syslog-ng-core
3 changes: 3 additions & 0 deletions data/osfamily/FreeBSD.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
patterndb::config_dir: /usr/local/etc/patterndb.d
patterndb::var_dir: /var/syslog-ng
1 change: 0 additions & 1 deletion examples/NOK_mismatching_action.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

Exec {
Expand Down
1 change: 0 additions & 1 deletion examples/OK_getent.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
syslogng_modules => ['tfgetent'],
}

Expand Down
1 change: 0 additions & 1 deletion examples/OK_hiera.pp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#
class { 'patterndb':
base_dir => '/tmp/',
manage_package => false,
syslogng_modules => [],
use_hiera => true,
Expand Down
1 change: 0 additions & 1 deletion examples/OK_hiera_puppet5.pp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#
class { 'patterndb':
base_dir => '/tmp/',
manage_package => false,
syslogng_modules => [],
use_hiera => true,
Expand Down
1 change: 0 additions & 1 deletion examples/OK_hybrid.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::raw::ruleset { 'raw':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_ltgt.pp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#
class { 'patterndb':
base_dir => '/tmp/',
manage_package => false,
syslogng_modules => [],
}
Expand Down
1 change: 0 additions & 1 deletion examples/OK_modules.pp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
}
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
syslogng_modules => ['basicfuncs'],
}

Expand Down
1 change: 0 additions & 1 deletion examples/OK_multiple_pdb.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'dhclient':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_notest.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
syslogng_modules => ['pdbtool_test_would_fail_with_this_module'],
test_before_deploy => false,
}
Expand Down
1 change: 0 additions & 1 deletion examples/OK_raw.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
syslogng_modules => [],
}

Expand Down
1 change: 0 additions & 1 deletion examples/OK_s.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

Patterndb::Simple::Rule {
Expand Down
1 change: 0 additions & 1 deletion examples/OK_separate_action.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

Exec {
Expand Down
1 change: 0 additions & 1 deletion examples/OK_separate_rules.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'empty_ruleset':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_separate_rules_and_actions.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

Exec {
Expand Down
1 change: 0 additions & 1 deletion examples/OK_simple.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'dhclient':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_simple_action.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'dhclient':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_simple_coerce.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'plop':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_simple_context.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'dhclient':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_simple_empty.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp/',
}

patterndb::simple::ruleset { 'empty':
Expand Down
1 change: 0 additions & 1 deletion examples/OK_yum.pp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#
class { 'patterndb':
manage_package => false,
base_dir => '/tmp',
syslogng_modules => [],
test_before_deploy => true,
}
Expand Down
49 changes: 14 additions & 35 deletions manifests/init.pp
Original file line number Diff line number Diff line change
@@ -1,51 +1,30 @@
#
class patterndb (
String[1] $base_dir = '/',
String[1] $temp_dir = "${base_dir}/tmp/syslog-ng",
Variant[String[1],Boolean] $package_name = false,
String[1] $package_name,
Stdlib::Absolutepath $config_dir,
Stdlib::Absolutepath $var_dir,
Stdlib::Absolutepath $cache_dir = '/var/cache/syslog-ng',
Boolean $manage_package = true,
Array[String[1]] $syslogng_modules = [],
Boolean $use_hiera = false,
Boolean $_manage_top_dirs = true,
Boolean $test_before_deploy = true
) {
# package
if $manage_package {
if $package_name =~ String {
$real_package_name = $package_name
} else {
case $facts['os']['family'] {
'RedHat': { $real_package_name = 'syslog-ng' }
'Debian': { $real_package_name = 'syslog-ng-core' }
default: { fail("unsupported osfamily: ${facts['os']['family']}") }
}
}
ensure_resource ( 'package', $real_package_name, { 'ensure' => 'installed' })
}
ensure_resource ( 'file', $temp_dir, { ensure => directory })
if $_manage_top_dirs {
ensure_resource ( 'file', "${base_dir}/etc", { ensure => 'directory' })
ensure_resource ( 'file', "${base_dir}/var", { ensure => 'directory' })
ensure_resource ( 'file', "${base_dir}/var/lib", { ensure => 'directory' })
ensure_resource ( 'package', $package_name, { 'ensure' => 'installed' })
}
ensure_resource ( 'file', $cache_dir, { ensure => directory })
ensure_resource (
'file', "${base_dir}/etc/syslog-ng",
'file', $var_dir,
{ ensure => 'directory' }
)
ensure_resource (
'file', "${base_dir}/var/lib/syslog-ng",
{ ensure => 'directory' }
)
ensure_resource (
'file', "${base_dir}/var/lib/syslog-ng/patterndb",
{
ensure => 'directory',
purge => true,
recurse => true
}
)
$pdb_dir = "${base_dir}/etc/syslog-ng/patterndb.d"
file { $pdb_dir:
file { "${var_dir}/patterndb":
ensure => 'directory',
purge => true,
recurse => true,
}

file { $config_dir:
ensure => directory,
purge => true,
force => true,
Expand Down
14 changes: 7 additions & 7 deletions manifests/parser.pp
Original file line number Diff line number Diff line change
Expand Up @@ -15,36 +15,36 @@
$tmp = join($_modules,' --module=')
$modules = "--module=${tmp}"
}
ensure_resource('file', "${patterndb::pdb_dir}/${name}", {
ensure_resource('file', "${patterndb::config_dir}/${name}", {
'ensure' => 'directory',
'purge' => true,
'force' => true,
'recurse' => true,
})
ensure_resource ('file', "${patterndb::temp_dir}/patterndb", {
ensure_resource ('file', "${patterndb::cache_dir}/patterndb", {
'ensure' => 'directory',
})
ensure_resource ('file', "patterndb::file::${name}", {
'ensure' => 'present',
'path' => "${patterndb::base_dir}/var/lib/syslog-ng/patterndb/${name}.xml"
'path' => "${patterndb::var_dir}/patterndb/${name}.xml"
})
exec { "patterndb::merge::${name}":
command => "pdbtool merge -r --glob \\*.pdb -D ${patterndb::pdb_dir}/${name} -p ${patterndb::temp_dir}/patterndb/${name}.xml",
command => "pdbtool merge -r --glob \\*.pdb -D ${patterndb::config_dir}/${name} -p ${patterndb::cache_dir}/patterndb/${name}.xml",
path => $facts['path'],
logoutput => true,
refreshonly => true,
}

exec { "patterndb::test::${name}":
#command => "/usr/bin/pdbtool --validate test ${::patterndb::temp_dir}/patterndb/${name}.xml $modules",
command => "pdbtool test ${patterndb::temp_dir}/patterndb/${name}.xml ${modules}",
#command => "/usr/bin/pdbtool --validate test ${::patterndb::cache_dir}/patterndb/${name}.xml $modules",
command => "pdbtool test ${patterndb::cache_dir}/patterndb/${name}.xml ${modules}",
path => $facts['path'],
logoutput => true,
refreshonly => true,
}

exec { "patterndb::deploy::${name}":
command => "cp ${patterndb::temp_dir}/patterndb/${name}.xml ${patterndb::base_dir}/var/lib/syslog-ng/patterndb/",
command => "cp ${patterndb::cache_dir}/patterndb/${name}.xml ${patterndb::var_dir}/patterndb/",
logoutput => true,
path => $facts['path'],
refreshonly => true,
Expand Down
4 changes: 2 additions & 2 deletions manifests/raw/ruleset.pp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
}

if $ensure == 'directory' {
file { "${patterndb::pdb_dir}/${parser}/${name}":
file { "${patterndb::config_dir}/${parser}/${name}":
ensure => $ensure,
recurse => $recurse,
mode => '0644',
Expand All @@ -31,7 +31,7 @@
notify => Exec["patterndb::merge::${parser}"],
}
} else {
file { "${patterndb::pdb_dir}/${parser}/${name}.pdb":
file { "${patterndb::config_dir}/${parser}/${name}.pdb":
ensure => $ensure,
mode => '0644',
source => $source,
Expand Down
2 changes: 1 addition & 1 deletion manifests/simple/ruleset.pp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
}
}

$pdb_file = "${patterndb::pdb_dir}/${parser}/${order}${name}.pdb"
$pdb_file = "${patterndb::config_dir}/${parser}/${order}${name}.pdb"

concat { "patterndb_simple_ruleset-${title}":
path => $pdb_file,
Expand Down
Loading

0 comments on commit 340bbd6

Please sign in to comment.