Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for FreeBSD #48

Merged
merged 8 commits into from
Jan 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missed one here


#### 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
Loading