Version information
This version is compatible with:
- Puppet Enterprise 2023.8.x, 2023.7.x, 2023.6.x, 2023.5.x, 2023.4.x, 2023.3.x, 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x
- Puppet >= 7.0.0 < 9.0.0
- Debian, , , , , ,
Start using this module
Add this module to your Puppetfile:
mod 'puppet-rsyslog', '7.1.0'
Learn more about managing modules with a PuppetfileDocumentation
puppet-rsyslog
Table of Contents
Overview
This module was first published as crayfishx/rsyslog
. It has now moved to puppet/rsyslog
and is managed by the community group Vox Pupuli.
Module Description
This module manages the rsyslog server and client configuration. It supports rsyslog v8 and defaults to configuring most things in the newer rainerscript configuration style. Where possible, common configuration patterns have been abstracted so they can be defined in a structured way from hiera. Though there are a lot of customization options with the configuration, highly complex rsyslog configurations are not easily represented in simple data structures and in these circumstances you may have to provide raw rainerscript code to acheive what you need. However, the aim of this module is to abstract as much as possible.
This module is only compatible with Puppet 4.0.0+
Setup
What this module affects
- Installs the Rsyslog package, service, and configuration.
- Install ancillary plugin packages.
Beginning with this module
This declaration will get you basic configuration for Rsyslog on your system:
include rsyslog::config
Usage
Rsyslog Configuration Directives
Config file
By default, everything is configured in a single file under $confdir
called 50_rsyslog.conf. This means that packages and other OS specific configurations can also be included (see purge_config_files above). The default file can be changed using the rsyslog::target_file
directive and is relative to the confdir.
eg:
rsyslog::target_file: 50_rsyslog.conf
You can, however, define custom confdirs and/or custom paths for configuration files. All configuration options have the following global options you can add to their hiera keys:
priority
- Order in the file to place the config value relative to the other config options in the file. Takes an integer. Defaults to the priority set for the configuration type. See Ordering for more.target
- Target file to place the config values in. Defaults to 50_rsyslog.conf in the default$confdir
.confdir
- Target configuration directory. Defaults to/etc/rsyslog.d
.
Ordering
The following configuration parameters are defaults for the order of configuration object types within the configuration file. They can be overriden for individual object definitions (see configuring objects below)
## Default object type priorities (can be overridden)
rsyslog::global_config_priority: 10
rsyslog::module_load_priority: 20
rsyslog::input_priority: 30
rsyslog::main_queue_priority: 40
rsyslog::parser_priority: 45
rsyslog::template_priority: 50
rsyslog::filter_priority: 55
rsyslog::action_priority: 60
rsyslog::ruleset_priority: 65
rsyslog::lookup_table_priority: 70
rsyslog::legacy_config_priority: 80
rsyslog::custom_priority: 90
Ordering is done numerically. I.E. 111 is after 110 is after 99.
Configuring Objects
Configuration objects are written to the configuration file in rainerscript format and can be configured in a more abstract way directly from Hiera. The following configuration object types are supported
- Modules
- Global configuration
- Main queue options
- Templates
- Actions
- Inputs
- Lookup_tables
- Parser
- Rulesets
- Filters
- legacy_config
rsyslog::config::modules
A hash of hashes, hash key represents the module name and accepts a hash with values or an empty hash as its value. The hash accepts the following three values:
type
: values can beexternal or builtin
the default value is external and need not be specified explicitly.config
: its a hash which provides optional parameters to the module loaded.priority
: The module load order can be prioritised based on the optionalpriority
value.
Puppet example:
class { 'rsyslog::config':
'modules' => {
'imuxsock' => {},
'imudp' => {
'config' => {
'threads' => '2',
'TimeRequery' => '8',
'batchSize' => '128',
},
},
'omusrmsg' => {
'type' => 'builtin',
},
'omfile' => {
'type' => 'builtin',
'config' => {
'fileOwner' => 'syslog',
'fileGroup' => 'adm',
'dirGroup' => 'adm',
'fileCreateMode' => '0640',
'dirCreateMode' => '0755',
},
},
'impstats' => {
'type' => 'external',
'priority' => 29,
'config' => {
'interval' => '60',
'severity' => '7',
'log.syslog' => 'off',
'log.file' => '/var/log/rsyslog/logs/stats/stats.log',
'Ruleset' => 'remote',
},
},
},
}
Hiera example:
rsyslog::config::modules:
imuxsock: {}
imudp:
config:
threads: "2"
TimeRequery: "8"
batchSize: "128"
omusrmsg:
type: "builtin"
omfile:
type: "builtin"
config:
fileOwner: "syslog"
fileGroup: "adm"
dirGroup: "adm"
fileCreateMode: "0640"
dirCreateMode: "0755"
impstats:
type: "external"
priority: 29
config:
interval: "60"
severity: "7"
log.syslog: "off"
log.file: "/var/log/rsyslog/logs/stats/stats.log"
Ruleset: "remote"
will produce
module (load="imuxsock")
module (load="imudp"
threads="2"
TimeRequery="8"
batchSize="128"
)
module (load="builtin:omusrmsg")
module (load="builtin:omfile"
fileOwner="syslog"
fileGroup="adm"
dirGroup="adm"
fileCreateMode="0640"
dirCreateMode="0755"
)
module (load="impstats"
interval="60"
severity="7"
log.syslog="off"
log.file="/var/log/rsyslog/logs/stats/stats.log"
Ruleset="remote"
)
rsyslog::config::global_config
A hash of hashes, they key represents the configuration setting and the value is a hash with the following keys:
value
: the value of the settingtype
: the type of format to use (legacy or rainerscript), if omitted rainerscript is used.
Puppet example:
class { 'rsyslog::config':
'global_config' => {
'umask' => {
'value' => '0000',
'type' => 'legacy',
'priority' => 01,
},
'RepeatedMsgReduction' => {
'value' => 'on',
'type' => 'legacy',
},
'PrivDropToUser' => {
'value' => 'syslog',
'type' => 'legacy',
},
'PrivDropToGroup' => {
'value' => 'syslog',
'type' => 'legacy',
},
'parser.escapeControlCharactersOnReceive' => {
'value' => 'on',
},
'workDirectory' => {
'value' => '/var/spool/rsyslog',
},
'maxMessageSize' => {
'value' => '64k',
},
},
}
Hiera example:
rsyslog::config::global_config:
umask:
value: '0000'
type: legacy
priority: 01
RepeatedMsgReduction:
value: 'on'
type: legacy
PrivDropToUser:
value: 'syslog'
type: legacy
PrivDropToGroup:
value: 'syslog'
type: legacy
parser.escapeControlCharactersOnReceive:
value: 'on'
workDirectory:
value: '/var/spool/rsyslog'
maxMessageSize:
value: '64k'
will produce
$umask 0000
$PrivDropToGroup syslog
$PrivDropToUser syslog
$RepeatedMsgReduction on
global (
parser.escapeControlCharactersOnReceive="on"
workDirectory="/var/spool/rsyslog"
maxMessageSize="64k"
)
rsyslog::config::main_queue_opts
Configures the main_queue
object in rsyslog as a hash. eg:
Puppet Example:
class { 'rsyslog::config':
'main_queue_opts' => {
'queue.maxdiskspace' => '1000G',
'queue.dequeuebatchsize' => 1000,
}
}
Hiera Example:
rsyslog::config::main_queue_opts:
queue.maxdiskspace: 1000G
queue.dequeuebatchsize: 1000
will produce
main_queue(
queue.maxdiskspace="1000G"
queue.dequeuebatchsize="1000"
)
rsyslog::config::templates
Configures template
objects in rsyslog. Each element is a hash containing the name of the template, the type and the template data. The type parameter can be one of string
, subtree
, plugin
or list
Puppet Example:
class { 'rsyslog::config':
'templates' => {
'remote' => {
'type' => 'string',
'string' => '/var/log/rsyslog/logs/%fromhost-ip%.log',
},
'tpl2' => {
'type' => 'subtree',
'subtree' => '$1!$usr',
},
'someplug' => {
'type' => 'plugin',
'plugin' => 'foobar',
},
}
}
Hiera Example:
rsyslog::config::templates:
remote:
type: string
string: "/var/log/rsyslog/logs/%fromhost-ip%/%fromhost-ip%.log"
tpl2:
type: subtree
subtree: "$1!$usr"
someplug:
type: plugin
plugin: foobar
will produce
template (name="remote" type="string"
string="/var/log/rsyslog/logs/%fromhost-ip%/%fromhost-ip%.log"
)
When using list
, the list_descriptions
hash should contain an array of single element hashes, the key should be constant
or property
with their corresponding parameters in a sub hash.
Puppet example:
class { 'rsyslog::config':
'templates' => {
'plain-syslog' => {
'type' => 'list',
'list_descriptions' => [
{
'constant' => {
'value' => '{',
}
},
{
'constant' => {
'value' => '\"@timestamp\":\"',
}
},
{
'propery' => {
'name' => 'timereported',
'dateFormat' => 'rfc3339',
}
},
{
'constant' => {
'value' => '\",\"host\":\"'
}
},
{
'property' => {
'name' => 'hostname'
}
},
{
'constant' => {
'value' => '\",\"severity\":\"'
}
},
{
'property' => {
'name' => 'syslogseverity-text',
}
},
{
'constant' => {
'value' => '\",\"facility\":\"'
}
},
{
'property' => {
'name' => 'syslogfacility-text'
}
},
{
'constant' => {
'value' => '\",\"host\":\"'
}
},
{
'property' => {
'name' => 'syslogtag',
'format' => 'json',
}
},
{
'constant' => {
'value' => '\",\"message\":\"'
}
},
{
'property' => {
'name' => 'msg',
'format' => 'json'
}
},
{
'constant' => {
'value' => '\"}'
}
}
]
}
}
}
Hiera example:
plain-syslog:
type: list
list_descriptions:
- constant:
value: '{'
- constant:
value: '\"@timestamp\":\"'
- property:
name: timereported
dateFormat: rfc3339
- constant:
value: '\",\"host\":\"'
- property:
name: hostname
- constant:
value: '\",\"severity\":\"'
- property:
name: syslogseverity-text
- constant:
value: '\",\"facility\":\"'
- property:
name: syslogfacility-text
- constant:
value: '\",\"tag\":\"'
- property:
name: syslogtag
format: json
- constant:
value: '\",\"message\":\"'
- property:
name: msg
format: json
- constant:
value: '\"}'
will produce
template (name="plain-syslog" type="list"
)
{
constant(value="{" )
constant(value="\"@timestamp\":\"" )
property(name="timereported" dateFormat="rfc3339" )
constant(value="\",\"host\":\"" )
property(name="hostname" )
constant(value="\",\"severity\":\"" )
property(name="syslogseverity-text" )
constant(value="\",\"facility\":\"" )
property(name="syslogfacility-text" )
constant(value="\",\"tag\":\"" )
property(name="syslogtag" format="json" )
constant(value="\",\"message\":\"" )
property(name="msg" format="json" )
constant(value="\"}" )
}
rsyslog::config::actions
Configures action objects in rainerscript. Each element of the hash contains the type of action, followed by a hash of configuration options. It also accepts an optional facility parameter and the content is formatted based on the no of config options passed and if the facility option is present.
Puppet example:
class { 'rsyslog::config':
'actions' => {
'all_logs' => {
'type' => 'omfile',
'facility' => '*.*;auth,authpriv.none',
'config' => {
'dynaFile' => 'remoteSyslog',
'specifics' => '/var/log/test',
}
},
'kern_logs' => {
'type' => 'omfile',
'facility' => 'kern.*',
'config' => {
'dynaFile' => 'remoteSyslog',
'file' => '/var/log/kern.log',
'cmd' => '/proc/cmdline',
}
},
'elasticsearch' => {
'type' => 'omelasticsearch',
'config' => {
'queue.type' => 'linkedlist',
'queue.spoolDirectory' => '/var/log/rsyslog/queue'
}
}
}
}
Hiera example:
rsyslog::config::actions:
all_logs:
type: omfile
facility: "*.*;auth,authpriv.none"
config:
dynaFile: "remoteSyslog"
specifics: "/var/log/test"
kern_logs:
type: omfile
facility: "kern.*"
config:
dynaFile: "remoteSyslog"
file: "/var/log/kern.log"
cmd: "/proc/cmdline"
elasticsearch:
type: omelasticsearch
config:
queue.type: "linkedlist"
queue.spoolDirectory: /var/log/rsyslog/queue
will produce
#Note: There is only 2 options passed so formats in a single line.
# all_logs
*.*;auth,authpriv.none action(type="omfile" dynaFile="remoteSyslog" specifics="/var/log/test" )
#Note: There is more than 2 options passed so formats into multi line with facility.
# kern_logs
kern.* action(type="omfile"
dynaFile="remoteSyslog"
file="/var/log/kern.log"
cmd="/proc/cmdline"
)
#Note: There is no facility option passed so formats it without facility.
action(type="omelasticsearch"
queue.type="linkedlist"
queue.spoolDirectory="/var/log/rsyslog/queue"
)
rsyslog::config::inputs
Configures input objects in rainerscript. Each element of the hash contains the type of input, followed by a hash of configuration options. Eg:
Puppet examples:
class { 'rsyslog:config':
'inputs' => {
'imudp' => {
'type' => 'imudp',
'config' => {
'port' => '514'
}
}
}
}
Hiera examples:
rsyslog::config::inputs:
imudp:
type: imudp
config:
port: '514'
will produce
# imdup
input(type="imudp"
port="514"
)
rsyslog::config::lookup_tables
Configures lookup_tables objects in rainerscript AND generates the JSON lookup_table file. Each key of the hash contains the name of the lookup/lookup_table.
The elements of the hash contain a json
hash containing the values for the JSON file, a lookup_file element that is the path to where the JSON file will be stored,
and a reload_on_hup boolean.
The json hash contains 4 elements: version
, nolookup
, type
, and table
. They MUST be specified in this order as per the
lookup_tables documentation:
version
- Integer denoting the version/revision of the lookup_table file.nolookup
- String denoting what should be returned if a lookup doesn't find a match in the table.type
- Enumerable denoting the type of lookup table. This can bestring
,array
, orsparseArray
.table
- An Array of hashes containing the table index and value for each lookup.
Puppet example:
class { 'rsyslog::config':
'lookup_tables' => {
'ip_lookup' => {
'lookup_json' => {
'version' => 1,
'nolookup' => 'unk',
'type' => 'string',
'table' => [
{
'index' => '1.1.1.1',
'value' => 'AB'
},
{
'index' => '2.2.2.2',
'value' => 'CD'
}
]
},
'lookup_file' => '/etc/rsyslog.d/tables/ip_lookup.json',
'reload_on_hup' => true
}
}
}
Hiera Example:
rsyslog::config::lookup_tables:
ip_lookup:
lookup_json:
version: 1
nolookup: 'unk'
type: 'string'
table:
- index: '1.1.1.1'
value: 'AB'
- index: '2.2.2.2'
value: 'CD'
lookup_file: '/etc/rsyslog.d/tables/ip_lookup.json'
reload_on_hup: true
will produce
# /etc/rsyslog.d/tables/ip_lookup.json
{
"version": 1,
"nomatch": "unk",
"type": "string",
"table": [
{
"index": "1.1.1.1",
"value": "A"
},
{
"index": "2.2.2.2",
"value": "B"
}
]
}
and
lookup_table(name="ip_lookup" file="/etc/rsyslog.d/tables/ip_lookup.json" reloadOnHUP="on")
NOTE: This does not create the actual lookup()
call in the Rsyslog configuration file(s). Currently that is only supported via
the rsyslog::config::custom_config
hash as it requires setting rsyslog variables (I.E. - set $.iplook = lookup('ip_lookup', $hostname)
).
rsyslog::config::parser
Configures parser objects in rainerscript. Each Element of the hash contains the type of parser, followed by a hash of configuration options. Eg:
Puppet Example:
class { 'rsyslog::config':
'parser' => {
'pmrfc3164_hostname_with_slashes' => {
'type' => 'pmrfc3164',
'config' => {
'permit.slashesinhostname' => 'on'
}
}
}
}
Hiera Example:
rsyslog::config::parser:
pmrfc3164_hostname_with_slashes:
type: pmrfc3164
config:
permit.slashesinhostname: 'on'
will produce
parser(name="pmrfc3164_hostname_with_slashes"
type="pmrfc3164"
permit.slashesinhostname="on"
)
rsyslog::config::rulesets
Configures Rsyslog ruleset blocks in rainerscript. There are two elements in the rulesets hash:
parameters
- settings to pass to the ruleset determining things such as which rsyslog parser to use or the ruleset's queue size.rules
- the actual content that goes inside the ruleset. Currently the following are supported:action
- rsyslog actions defined inside of the ruleset.lookup
- Sets a variable to the results of an rsyslog lookup.set
- Set an rsyslog variable or property. Property explicitly requires that the set name be a string beginning with$!
, while a variable can be a plain string or a string starting with$.
.- NOTE: Setting the variable with a string that does NOT begin with
$.
is deprecated and will be removed in the next major release!
- NOTE: Setting the variable with a string that does NOT begin with
call
- call a specific action.exec
- execute the following system commandexpression_filter
- Filter based on one or more expressions.property_filter
- Filter based on one or more RsyslogD properties.
stop
- a Boolean to set if the ruleset ends with a stop or not.
NOTE: For any rule
key that can also be a standalone rsyslog resource (action
, expression_filter
, or property_filter
), the user MUST define a name key that will be passed as the resource name to the template. This will be simplified in a future release.
NOTE: While it is entirely possible to configure Rulesets using the Puppet DSL, it is recommended against as Rulesets can easily become difficult to read when compared to the YAML-based hieradata.
Puppet example:
class { 'rsyslog::config':
'rulesets' => {
'ruleset_eth0_514_tcp' => {
'parameters' => {
'parser' => 'pmrfc3164.hostname_with_slashes',
'queue.size' => '10000',
},
'rules' => [
{ 'set' => { '$!rcv_time' => 'exec_template("s_rcv_time")' }},
{ 'set' => { '$.utime_gen' => 'exec_template("s_unixtime_generated")' }},
{ 'set' => { 'uuid' => '$uuid' }},
{
'action' => {
'name' => 'utf8-fix',
'type' => 'mmutf8fix',
}
},
{
'action' => {
'name' => 'test-action',
'type' => 'omfile',
'facility' => '*.*;auth,authpriv.none',
'config' => {
'dynaFile' => 'remoteSyslog',
'specifics' => '/var/log/test'
}
}
},
{
'action' => {
'name' => 'test-action2',
'type' => 'omfile',
'config' => {
'dynaFile' => 'remoteSyslog',
'specifics' => '/var/log/test'
}
}
},
{
'lookup' => {
'var' => 'srv',
'lookup_table' => 'srv-map',
'expr' => '$fromhost-ip'
}
},
{ 'call' => 'action.parse.rawmsg' },
{ 'call' => 'action.parse.r_msg' },
],
'stop' => true,
}
}
}
Hiera example:
rsyslog::config::rulesets:
ruleset_eth0_514_tcp:
parameters:
parser: pmrfc3164.hostname_with_slashes
queue.size: '10000'
rules:
- set:
# Set a Property with a value from a template.
$!rcv_time: 'exec_template("s_rcv_time")'
- set:
# Set a Variable with a value from a template.
$.utime_gen: 'exec_template("s_unixtime_generated")'
- set:
# Set a Variable using the deprecated method with a value from $uuid
uuid: '$uuid'
- action:
name: utf8-fix
type: mmutf8fix
- action:
name: test-action
type: omfile
facility: "*.*;auth,authpriv.none"
config:
dynaFile: "remoteSyslog"
specifics: "/var/log/test"
- action:
name: test-action2
type: omfile
config:
dynaFile: "remoteSyslog"
specifics: "/var/log/test"
- lookup:
var: srv
lookup_table: srv-map
expr: '$fromhost-ip'
- call: 'action.parse.rawmsg'
- call: 'action.parse.r_msg'
- exec: '/bin/echo'
stop: true
Will produce:
ruleset (name="ruleset_eth0_514_tcp"
parser="pmrfc3164.hostname_with_slashes"
queue.size="10000"
) {
set $.rcv_time = exec_template("s_rcv_time");
set $.utime_gen = exec_template("s_unixtime_generated");
set $.uuid = $uuid;
# utf8-fix action
action(type="mmutf8fix"
name="utf8-fix"
)
# test-action action
*.*;auth,authpriv.none action(type="omfile"
name="test-action"
dynaFile="remoteSyslog"
specifics="/var/log/test"
)
# test-action2 action
action(type="omfile"
name="test-action2"
dynaFile="remoteSyslog"
specifics="/var/log/test"
)
set $.srv = lookup("srv-map", $fromhost-ip);
call action.parse.rawmsg
call action.parse.r_msg
^/bin/echo
stop
}
Rulesets can also contain filtering logic for calling other rulesets, setting other variables, or even dropping logs based on specific values. Filtering logic is required to utilize lookup_tables
and lookup
calls.
Rsyslog puppet supports two kinds of filters:
expression_filter
property_filter
More information about Rsyslog Filters can be found at: http://www.rsyslog.com/doc/v8-stable/configuration/filters.html
Ruleset Expression Filter
Expression filters use traditional if/else
and if/else if/else
logic to execute rules on specific return values. lookup_tables
are compatible ONLY with expression_filters
The Ruleset expression_filter
key has a few different keys than the rsyslog::config::expression_filters
parameter:
name
- Currently required to prevent errors. This is logical and only used by Puppet.filter
- Thefilter
key is synonymous with theconditionals
key found in thersyslog::config::expression_filters
parameter. See the Expression Filter Docs for more info.
Puppet Example:
class { 'rsyslog::config':
'rulesets' => {
'ruleset_eth0_514_udp' => {
'parameters' => {
'queue.type' => 'LinkedList'
},
'rules' => [
{
'expression_filter' => {
'filter' => {
'if' => {
'expression' => '$fromhost-ip == "192.168.255.1"',
'tasks' => [
{ 'call' => 'ruleset.action.rawlog.standard' },
{ 'stop' => true }
]
}
}
}
},
{ 'call' => 'ruleset.client.log.standard' },
{ 'call' => 'ruleset.unknown.standard' },
],
'stop' => true
}
}
}
Hiera Example:
rsyslog::config::rulesets:
ruleset_eth0_514_udp:
parameters:
queue.type: LinkedList
rules:
- expression_filter:
filter:
if:
expression: '$fromhost-ip == "192.168.255.1"'
tasks:
- call: "ruleset.action.rawlog.standard"
- stop: true
- call: "ruleset.client.log.standard"
- call: "ruleset.unknown.standard"
stop: true
will produce:
ruleset (name="ruleset_eth0_514_tcp"
queue.type="LinkedList"
) {
if $fromhost-ip == "192.168.255.1" then {
call ruleset.action.rawlog.standard
stop
}
call ruleset.client.log.standard
call ruleset.unknown.standard
stop
}
Puppet example with lookup tables:
NOTE: Good example for how to define multiple rsyslog resources in a single rsyslog::config
class
class { 'rsyslog::config':
'lookup_tables' => {
'srv-map' => {
'lookup_json' => {
'version' => 1,
'nolookup' => 'unk',
'type' => 'string',
'table' => [
{
'index' => '192.168.255.10',
'value' => 'windows'
},
{
'index' => '192.168.255.11',
'value' => 'windows'
},
{
'index' => '192.168.255.12',
'value' => 'linux'
}
],
},
'lookup_file' => '/etc/rsyslog.d/tables/srv-map.json',
'reload_on_hup' => true
}
},
'rulesets' => {
'ruleset_lookup_set_windows_by_ip' => {
'rules' => [
{
'lookup' => {
'var' => 'srv',
'lookup_table' => 'srv-map',
'expr' => '$fromhost-ip'
}
},
{
'expression_filter' => {
'filter' => {
'main' => {
'expression' => '$.srv == \"windows\"',
'tasks' => [
{ 'call' => 'ruleset.action.forward.windows' },
{ 'stop' => true }
]
},
'unknown_log' => {
'expression' => '$.srv == \"unk\"',
'tasks' => [
{ 'call' => 'ruleset.action.drop.unknown' },
{ 'stop' => 'true' }
]
},
'default' => {
'tasks' => [
{ 'stop' => 'true' }
]
}
}
}
}
]
}
}
}
Example with lookup:
rsyslog::config::lookup_tables:
srv-map:
lookup_json:
version: 1
nolookup: 'unk'
type: 'string'
table:
- index: '192.168.255.10'
value: 'windows'
- index: '192.168.255.11'
value: 'windows'
- index: '192.168.255.12'
value: 'linux'
lookup_file: '/etc/rsyslog.d/tables/srv-map.json'
reload_on_hup: true
rsyslog::config::rulesets:
ruleset_lookup_set_windows_by_ip:
rules:
- lookup:
var: srv
lookup_table: srv-map
expr: '$fromhost-ip'
- expression_filter:
filter:
main:
expression: '$.srv == "windows"'
tasks:
- call: "ruleset.action.forward.windows"
- stop: true
unknown_log:
expression: '$.srv == "unk"'
tasks:
- call: "ruleset.action.drop.unknown"
- stop: true
default:
tasks:
- stop: true
stop: true
Will produce:
#/etc/rsyslog.d/tables/srv-map.json
{
"version": 1,
"nomatch": "unk",
"type": "string",
"table": [
{
"index": "192.168.255.10",
"value": "windows"
},
{
"index": "192.168.255.11",
"value": "windows"
},
{
"index": "192.168.255.12",
"value": "linux"
}
]
}
#rsyslog.conf
lookup_table(name="srv-map" file="/etc/rsyslog.d/tables/srv-map.json" reloadOnHUP=on)
ruleset(name="ruleset_lookup_set_windows_by_ip"
) {
set $.srv = lookup("srv-map", $fromhost-ip);
if ($.srv == "windows") then {
call ruleset.action.forward.windows
stop
} else if ($.srv == "unk") then {
call ruleset.action.drop.unknown
stop
} else {
stop
}
}
Ruleset Property Filters
property_filters
are unique to rsyslogd. They allow to filter on any property, like HOSTNAME, syslogtag and msg. property_filters
are faster than expression_filters
as they us built-in rsyslog properties to lookup and match data.
Puppet Example:
class { 'rsyslog::config':
'rulesets' => {
'ruleset_msg_check_for_error' => {
'rules' => [
{
'property_filter' => {
'property' => 'msg',
'operator' => 'contains',
'value' => 'error',
'tasks' => [
{ 'call' => 'ruleset.action.error' },
{ 'stop' => true }
]
}
}
]
}
}
}
Hiera Example:
rsyslog::config::rulesets:
ruleset_msg_check_for_error:
rules:
- property_filter:
property: 'msg'
operator: 'contains'
value: 'error'
tasks:
- call: 'ruleset.action.error'
- stop: true
Will Generate:
#rsyslog.conf
ruleset(name="ruleset_msg_check_for_error"
) {
:msg, contains, "informational" {
call ruleset.action.error
stop
}
}
rsyslog::config::property_filters
Rsyslog has the ability to filter each log line based on log properties and/or variables.
There are four kinds of filters in Rsyslog:
- "traditional" severity/facility based Selectors - handled in the Actions parameter.
- BSD-style blocks - not supported in Rsyslog 7+ and as such are not supported in this module.
- Property-based Filters
- Expression-based Filters
This section covers Property and Expression based filters.
Property-based Filters
Property-based filters are unique to rsyslogd. They allow to filter on any property, like HOSTNAME, syslogtag and msg. Property-based filters are only supported with native properties in Rsyslog. See Rsyslog Properties for a list of supported properties.
The rsyslog::config::property_filters
parameter is a Hash of hashes where the hash-key is the logical name for the filter. This name is for Puppet resource naming purposes only and has no other function. The filter name has several additional child keys as well:
property
- the Rsyslogd property the filter will lookup.operator
- the Rsyslogd property filter-supported operator to compare the property value with the expected value. See Rsyslog Property Compare-Operations for a list of supported operators. These operators are validated with theRsyslog::PropertyOperator
data type.value
- the value that the property filter will match against.tasks
- A hash of actions to take in the event of a filter match.- All sub-keys for the
tasks
hash maps to another rsyslog configuration object.
- All sub-keys for the
Puppet Example:
class { 'rsyslog::config':
'property_filters' => {
'hostname_filter' => {
'property' => 'hostname',
'operator' => 'contains',
'value' => 'some_hostname',
'tasks' => [
{
'action' => {
'name' => 'omfile_defaults',
'type' => 'omfile',
'facility' => '*.*;auth,authpriv.none',
'config' => {
'dynaFile' => 'remoteSyslog',
'specifics' => '/var/log/test',
}
}
},
{ 'stop' => true }
]
},
'ip_filter' => {
'property' => 'fromhost-ip',
'operator' => 'startswith',
'value' => '192',
'tasks' => [
{ 'stop' => true }
]
}
}
}
Hiera Example:
rsyslog::config::property_filters:
hostname_filter:
property: hostname
operator: contains
value: some_hostname
tasks:
- action:
name: omfile_defaults
type: omfile
facility: "*.*;auth,authpriv.none"
config:
dynaFile: "remoteSyslog"
specifics: "/var/log/test"
- stop: true
ip_filter:
property: fromhost-ip
operator: startswith
value: '192'
tasks:
- stop: true
will produce
:hostname, contains, "some_hostname" {
*.*;auth,authpriv.none action(type="omfile" dynaFile="remoteSyslog" specifics="/var/log/test")
stop
}
:fromhost-ip, startswith, "192" {
stop
}
Expression-based Filters
Expression-based filters allow filtering on arbitrary complex expressions, which can include boolean, arithmetic and string operations.
Expression-based filters are also what are used to match against lookup_table data.
The rsyslog::config::expression_filters
parameter is a Hash of hashes where the hash-key is the logical name for the filter. This name is for Puppet resource naming purposes only and has no other function. The filter name has a few additional child keys as well:
conditionals
- Hash describing the different conditional cases, which are hashes of hashes.cases
- Hash of hashes. This has two reserved keys and four reserved names:if
/main
- This is the primary condition for your expression.if
is provided for backwards compatibility. requiredelse
/default
- This defines the optional "default" or "fall through" condition.else
is provided for backwards compatibility.- [string] case - All other cases are defined by your own descriptive name. These names are non-functional and purely for organizational purposes. They will render as an
else if
in the rsyslog configuration.
expression
- The string "expression" that will be used to match values. With all the potential options for logic, this was the easiest way to provide everyone with what they may need.tasks
- A hash of actions to take in the event of a filter match.- All sub-keys for the
tasks
hash maps to another rsyslog configuration object.
- All sub-keys for the
Puppet Examples
Old Syntax (still works):
class { 'rsyslog::config':
'expression_filters' => {
'hostname_filter' => {
'conditionals' => {
'if' => {
'expression' => '$msg contains "error"',
'tasks' => [
{
'action' => {
'name' => 'omfile_error',
'type' => 'omfile',
'config' => { 'specifics' => '/var/log/errlog' }
}
}
]
}
}
}
}
}
New Syntax:
class { 'rsyslog::config':
'expression_filters' => {
'hostname_filter' => {
'conditionals' => {
'main' => {
'expression' => '$msg contains "error"',
'tasks' => [
{
'action' => {
'name' => 'omfile_error',
'type' => 'omfile',
'config' => { 'specifics' => '/var/log/errlog' }
}
}
]
}
}
}
}
}
Hiera Examples
Old syntax (still works):
rsyslog::config::expression_filters:
hostname_filter:
conditionals:
# Uses the "if" keyword
if:
expression: '$msg contains "error"'
tasks:
- action:
name: omfile_error
type: omfile
config:
specifics: /var/log/errlog
New syntax:
rsyslog::config::expression_filters:
hostname_filter:
conditionals:
# Uses the "main" keyword
main:
expression: '$msg contains "error"'
tasks:
- action:
name: omfile_error
type: omfile
config:
specifics: /var/log/errlog
both will produce:
if $msg contains "error" then {
action(type="omfile" specifics="/var/log/errlog")
}
NOTE: Due to the amount of potential options available to the user, the expression
key is a plain text string field and the expression logic must be written out. See next example for more details.
Puppet Examples
Old Syntax (still works):
class { 'rsyslog::config':
'expression_filters' => {
'complex_filter' => {
'conditionals' => {
'if' => {
'expression' => '$syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0")',
'tasks' => [
{ 'stop' => true }
]
},
'else' => {
'tasks' => [
'action' => {
'name' => 'error_log',
'type' => 'omfile',
'config' => { 'specifics' => '/var/log/errlog' }
}
]
}
}
}
}
}
New Syntax:
class { 'rsyslog::config':
'expression_filters' => {
'complex_filter' => {
'conditionals' => {
'main' => {
'expression' => '$syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0")',
'tasks' => [
{ 'stop' => true }
]
},
'default' => {
'tasks' => [
'action' => {
'name' => 'error_log',
'type' => 'omfile',
'config' => { 'specifics' => '/var/log/errlog' }
}
]
}
}
}
}
}
Hiera Examples
Old Syntax (still works):
rsyslog::config::expression_filters:
complex_filter:
conditionals:
# Uses the "if" keyword
if:
expression: '$syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0")'
tasks:
- stop: true
# Uses the "else" keyword
else:
tasks:
- action:
name: error_log
type: omfile
config:
specifics: /var/log/errlog
New Syntax:
rsyslog::config::expression_filters:
complex_filter:
conditionals:
# Uses the "main" keyword
main:
expression: '$syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0")'
tasks:
- stop: true
# Uses the "default" keyword
default:
tasks:
- action:
name: error_log
type: omfile
config:
specifics: /var/log/errlog
both will produce:
if $syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0") then {
stop
}
else {
action(type="omfile" specifics="/var/log/errlog")
}
Example using more than two conditions:
Puppet Examples
class { 'rsyslog::config':
'expression_filters' => {
'conditionals' => {
'main' => {
'expression' => '$syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0")',
'tasks' => [{ 'stop' => true }]
},
'errlog' => {
'expression' => '$msg contains "error"',
'tasks' => [
{
'action' => {
'name' => 'omfile_error',
'type' => 'omfile',
'config' => { 'specifics' => '/var/log/errlog' }
}
}
]
},
'default' => {
'tasks' => [
{
'action' => {
'name' => 'system_log',
'type' => 'omfile',
'config' => { 'specifics' => '/var/log/system' }
}
}
]
}
}
}
}
Hiera Examples
rsyslog::config::expression_filters:
complex_filter:
conditionals:
# Uses the "main" keyword
main:
expression: '$syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0")'
tasks:
- stop: true
# Uses a descriptive keyname
errlog:
expression: '$msg contains "error"'
tasks:
- action:
name: omfile_error
type: omfile
config:
- specifics: /var/log/errlog
# Uses the "default" keyword
default:
tasks:
- action:
name: system_log
type: omfile
config:
specifics: /var/log/system
will produce:
if $syslogfacility-text == "local0" and $msg startswith "DEVNAME" and ($msg contains "error1" or $msg contains "error0") then {
stop
} else if $msg == "error" then {
action(type="omfile" specifics="/var/log/errlog")
} else {
action(type="omfile" specifics="/var/log/system")
}
rsyslog::config::legacy_config
Legacy config support is provided to facilitate backwards compatibility with sysklogd
format as this module mainly supports rainerscript
format.
A hash of hashes, each hash name is used as the comment/reference for the setting and the hash will have the following values:
key
: the key/logger rule settingvalue
: the value/target of the settingtype
: the type of format to use (legacy or sysklogd), if omitted sysklogd is used. If legacy type is usedkey
can be skipped and one long string can be provided as value.
Puppet Examples
class { 'rsyslog::config':
'legacy_config' => {
'auth_priv_rule' => {
'key' => 'auth,authpriv.*',
'value' => '/var/log/auth.log',
},
'auth_none_rule' => {
'key' => '*.*;auth,authpriv.none',
'value' => '/var/log/syslog',
},
'syslog_all_rule' => {
'key' => 'syslog.*',
'value' => '/var/log/rsyslog.log',
},
'mail_error_rule' => {
'key' => 'mail.err',
'value' => '/var/log/mail.err',
},
'news_critical_rule' => {
'key' => 'news.crit',
'value' => '/var/log/news/news.crit',
}
}
}
Hiera Examples
rsyslog::config::legacy_config:
auth_priv_rule:
key: "auth,authpriv.*"
value: "/var/log/auth.log"
auth_none_rule:
key: "*.*;auth,authpriv.none"
value: "/var/log/syslog"
syslog_all_rule:
key: "syslog.*"
value: "/var/log/rsyslog.log"
mail_error_rule:
key: "mail.err"
value: "/var/log/mail.err"
news_critical_rule:
key: "news.crit"
value: "/var/log/news/news.crit"
will produce
# auth_priv_rule
auth,authpriv.* /var/log/auth.log
# auth_none_rule
*.*;auth,authpriv.none /var/log/syslog
# syslog_all_rule
syslog.* /var/log/rsyslog.log
# mail_error_rule
mail.err /var/log/mail.err
# news_critical_rule
news.crit /var/log/news/news.crit
legacy type values can be passed as one long string skipping the key parameter like below and you can also override the priority in the hash to rearrange the contents eg:
emergency_rule:
key: "*.emerg"
value: ":omusrmsg:*"
testing_legacy_remotelog:
value: "*.* @@logmonster.cloudfront.net:1514"
type: "legacy"
priority: 12
testing_legacy_rule:
value: "*.* >dbhost,dbname,dbuser,dbpassword;dbtemplate"
type: "legacy"
will produce
# emergency_rule
*.emerg :omusrmsg:*
# testing_legacy_rule
*.* >dbhost,dbname,dbuser,dbpassword;dbtemplate
# testing_legacy_remotelog
*.* @@logmonster.cloudfront.net:1514
Positioning
All rsyslog object types are positioned according to the default variables (see Ordering). The position can be overridden for any object by adding the optional priority
parameter.
eg:
rsyslog::config::actions:
elasticsearch:
type: omelasticsearch
config:
queue.type: "linkedlist"
queue.spoolDirectory: "/var/log/rsyslog/queue"
priority: 35
Formatting
This module attempts to abstract rainerscript objects into data structures that can be handled easily within hiera, however there are clearly times when you need to add some more code structure around an object, such as conditionals. For simple code additions, the template
, action
, input
and global_config
object types support the optional parameter of format
which takes Puppet EPP formatted template as a value, using the variable $content
to signify the object itself. For example, to wrap an action in a simple conditional you could format it as
eg:
rsyslog::config::actions:
elasticsearch:
type: omelasticsearch
config:
queue.type: "linkedlist"
queue.spoolDirectory: "/var/log/rsyslog/queue"
format: |
if [ $fromhost == "foo.localdomain"] then {
<%= $content %>
}
For more complicated code structures that don't lend themselves well to a structured format, like multiple nested conditionals there is also a special configuration object type called custom_config. custom_config
takes two arguments, priority
to determine where in the file it should be configured, and content
a text string to insert. By default the priority is set by the custom_config_priority
parameter (see Ordering)
rsyslog::config::custom_config:
localhost_action:
priority: 45
content: |
if $fromhost == ["foo.localdomain","localhost"] then {
action(type="omfile" file="/var/log/syslog")
} else {
action(type="omelasticsearch"
queue.type="linkedlist"
queue.spoolDirectory="/var/log/rsyslog/queue"
)
}
stop:
content: |
if [ $fromhost == "foo" ] then stop
Known Issues
- Designed specifically for Rsyslog 8+ and the Rainerscript configuration format. Legacy configuration/Rsyslog < 8 support requires the use of the
custom_config
parameter. - The upstream repository for EL8 is currently broken and will not work.
License
- This module is licensed under Apache 2.0, see LICENSE for more details
Maintainer
- This module is maintained by Vox Pupuli. It was originally written by Craig Dunn (craig@craigdunn.org) @crayfishx.
Reference
Table of Contents
Classes
rsyslog
: Manage the Rsyslog daemon package, service, and configuration.rsyslog::base
: This class manages the base installation for rsyslogrsyslog::config
: Manage the configuration parameters for rsyslog. This class can be called explicitly or through the use of hieradata.rsyslog::config::actions
rsyslog::config::custom
rsyslog::config::expression_filters
rsyslog::config::global
rsyslog::config::inputs
rsyslog::config::legacy
rsyslog::config::lookup_tables
rsyslog::config::main_queue
rsyslog::config::modules
rsyslog::config::parsers
rsyslog::config::property_filters
rsyslog::config::rulesets
rsyslog::config::templates
Defined types
rsyslog::component::action
rsyslog::component::custom_config
: This is a catch-all definition for use in edge cases where some code needs inserting somewhere in rsyslog.d according to priority but cannotrsyslog::component::expression_filter
rsyslog::component::global_config
rsyslog::component::input
rsyslog::component::legacy_config
rsyslog::component::lookup_table
rsyslog::component::main_queue
rsyslog::component::module
rsyslog::component::parser
rsyslog::component::property_filter
rsyslog::component::ruleset
rsyslog::component::template
rsyslog::generate_concat
Data types
Rsyslog::Actions
: Struct data type alias for Rsyslog ActionsRsyslog::Actions::Outputs::Omamqp1
Rsyslog::Actions::Outputs::Omelasticsearch
Rsyslog::Actions::Outputs::Omfile
Rsyslog::Actions::Outputs::Omfwd
Rsyslog::Actions::Outputs::Omhiredis
Rsyslog::Actions::Outputs::Omhttpfs
Rsyslog::Actions::Outputs::Omjournal
: Struct data type for the Rsyslog JournalD module's Action optionsRsyslog::Actions::Outputs::Omkafka
: Struct data type for the Rsyslog Kafka module's Action optionsRsyslog::Actions::Outputs::Omlibdbi
: Struct data type for the Rsyslog libdbi module's Action optionsRsyslog::Actions::Outputs::Ommail
: Struct data type for the Rsyslog E-Mail module's Action optionsRsyslog::Actions::Outputs::Ommongodb
: Struct data type for the Rsyslog MongoDB output module's Action optionsRsyslog::Actions::Outputs::Ommysql
: Struct data type alias for MySQL Rsyslog output module.Rsyslog::Actions::Outputs::Ompgsql
: Struct data type for the Rsyslog PostgreSQL module's Action options Not allowing the serverport, uid, or pwd rsyslog options as they are ideRsyslog::Actions::Outputs::Ompipe
: Struct data type for the Rsyslog Pipe module's Action optionsRsyslog::Actions::Outputs::Omprog
: Struct data type for the Rsyslog Program module's Action optionsRsyslog::Actions::Outputs::Omrelp
: Struct data type for the Rsyslog RELP module's Action optionsRsyslog::Actions::Outputs::Omsnmp
: Struct data type for the Rsyslog SNMP module's Action optionsRsyslog::Actions::Outputs::Omudpspoof
: Struct data type for the Rsyslog UDP Spoof module's Action optionsRsyslog::Actions::Outputs::Omusrmsg
: Struct data type for the Rsyslog User MSG module's Action Parameters.Rsyslog::Actions::Parameters
: Struct data type for general Rsyslog Action parametersRsyslog::Inputs::Imbatchreports
: Data type for Rsyslog Input module parameters for batch report inputs.Rsyslog::Inputs::Imfile
: Data type for Rsyslog Input module input parameters for file inputs.Rsyslog::Inputs::Imgssapi
: Data type for Rsyslog Input module input parameters for gssapi.Rsyslog::Inputs::Imkafka
: Data type for Rsyslog Input module input parameters for Apache Kafka.Rsyslog::Inputs::Improg
: Data type for Rsyslog Input module input parameters for Program inputRsyslog::Inputs::Imptcp
: Data type for Rsyslog Plain TCP input moduleRsyslog::Inputs::Imrelp
: Data type for Rsyslog Plain TCP input moduleRsyslog::Inputs::Imtcp
: Data type for Rsyslog TCP input moduleRsyslog::Inputs::Imtuxedoulog
: Data for Rsyslog Input Tuxedo ULOG moduleRsyslog::Inputs::Imudp
: Data type for Rsyslog UDP input moduleRsyslog::Inputs::Imuxsock
: Data type for Rsyslog Unix Socket input moduleRsyslog::Modules::Input
Rsyslog::Modules::Inputs::Imdocker
: Data type for Rsyslog module parameters for imdockerRsyslog::Modules::Inputs::Imfile
: Data type for Rsyslog Input module parameters for file inputs.Rsyslog::Modules::Inputs::Imjournal
: Rsyslog imjournal Module parameter data typeRsyslog::Modules::Message
Rsyslog::Modules::Output
Rsyslog::Modules::Parser
Rsyslog::Modules::String
Rsyslog::PropertyOperator
: Enumerable custom type for rsyslog property operatorsRsyslog::Queue::Parameters
Rsyslog::Syslog::Severity
: Syslog severity data type
Classes
rsyslog
Manage the Rsyslog daemon package, service, and configuration.
Examples
using class
class { 'rsyslog':
manage_service => true,
}
using hieradata
# Manifest
include rsyslog
include rsyslog::config
# Hieradata
---
rsyslog::confdir: /etc/rsyslog.d
rsyslog::package_name: rsyslog
rsyslog::config::global_config:
workDirectory:
value: '/var/spool/rsyslog'
Parameters
The following parameters are available in the rsyslog
class:
confdir
package_name
package_version
config_file
feature_packages
module_load_priority
service_name
service_status
service_enabled
override_default_config
manage_package
use_upstream_repo
manage_confdir
manage_service
external_service
purge_config_files
global_config_priority
legacy_config_priority
template_priority
action_priority
input_priority
custom_priority
main_queue_priority
lookup_table_priority
parser_priorty
ruleset_priority
filter_priority
target_file
conf_permissions
confdir_permissions
global_conf_perms
parser_priority
confdir
Data type: String
The rsyslog configuration directory.
package_name
Data type: String
The name of the rsyslog package to install.
package_version
Data type: String
The version of rsyslog to install.
config_file
Data type: String
The global rsyslog configuration file.
feature_packages
Data type: Array
List of additional rsyslog packages to install.
module_load_priority
Data type: Integer
Order the loading of rsyslog modules relative to other configuration.
service_name
Data type: String
Name of the SystemD, Upstart, or SysVInit service.
service_status
Data type: String
State desired for the rsyslog service.
service_enabled
Data type: Boolean
Is the service enabled or not.
override_default_config
Data type: Boolean
Override the default rsyslog.conf file.
manage_package
Data type: Boolean
Toggle the managing of the rsyslog package.
use_upstream_repo
Data type: Boolean
Toggle using the upstream Adiscon Rsyslog repository.
manage_confdir
Data type: Boolean
Toggle management of the Rsyslog configuration directory.
manage_service
Data type: Boolean
Toggle management of the rsyslog service.
external_service
Data type: Boolean
Toggle if the service is external to where rsyslog is being run. I.E. a service that starts a docker container running rsyslog.
purge_config_files
Data type: Boolean
Toggle purging of unmanaged configuration files.
global_config_priority
Data type: Integer
Set the global ordering of global configuration parameters in rsyslog.
legacy_config_priority
Data type: Integer
Set the global ordering of legacy configuration parameters in rsyslog.
template_priority
Data type: Integer
Set the global ordering of template configuration in rsyslog.
action_priority
Data type: Integer
Set the global ordering of action configuration in rsyslog.
input_priority
Data type: Integer
Set the global ordering of input configuration in rsyslog.
custom_priority
Data type: Integer
Set the global ordering of custom configuration in rsyslog.
main_queue_priority
Data type: Integer
Set the global ordering of main queue configuration in rsyslog.
lookup_table_priority
Data type: Integer
Set the global ordering of lookup table configuration in rsyslog.
parser_priorty
Set the global ordering of parser configuration in rsyslog.
ruleset_priority
Data type: Integer
Set the global ordering of rulesets configuration in rsyslog.
filter_priority
Data type: Integer
Set the global ordering of filter configuration in rsyslog.
target_file
Data type: String
Target file to insert configuration into.
conf_permissions
Data type: Stdlib::Filemode
Set the file mode for the generated configuration files.
Default value: '0644'
confdir_permissions
Data type: Stdlib::Filemode
Set the file mode for the rsyslog.d configuration directory.
Default value: '0755'
global_conf_perms
Data type: Stdlib::Filemode
Set the file mode for the /etc/rsyslog.conf
Default value: $conf_permissions
parser_priority
Data type: Integer
rsyslog::base
This class manages the base installation for rsyslog
rsyslog::config
Manage the configuration parameters for rsyslog. This class can be called explicitly or through the use of hieradata.
Examples
using class
class { 'rsyslog::config':
global_config => {
'workDirectory' => {
'value' => '/var/spool/rsyslog',
},
'maxMessageSize' => {
'value' => '64k'
}
},
actions => {
'all_logs' => {
'type' => 'omfile',
'facility' => '*.*;auth,authpriv.none',
'config' => {
'dynaFile' => 'remoteSyslog',
'specifics' => '/var/log/test',
},
},
},
}
using hieradata
# Include class
include rsyslog::config
# Hieradata
---
rsyslog::config::global_config:
workDirectory:
value: '/var/spool/rsyslog'
maxMessageSize:
value: '64k'
rsyslog::config::actions:
all_logs:
type: omfile
factiliy: "*.*;auth,authpriv.none"
config:
dynaFile: remoteSyslog
specifics: '/var/log/test'
Parameters
The following parameters are available in the rsyslog::config
class:
global_config
legacy_config
templates
actions
inputs
custom_config
main_queue_opts
modules
lookup_tables
parsers
rulesets
property_filters
expression_filters
global_config
Data type: Hash
Hash of global configuration options. Supports both Rainerscript and Legacy configuration formats depending on the configuration option.
- :name (String) [undef] Name of the global configuration option to set.
- :priority (Integer) [10] Sets where in the config the option will be placed in the target file.
- :target (String) [50_rsyslog.conf] File to place the conf
- :confdir (String) [/etc/rsyslog.d] Directory where the configuration file exists.
- :value (String) [] Value of the configuration item
- :config (Hash) [{}] Hash of configuration data for the option. Contents dependent on the configuration option.
- :type (Enum['rainerscript', 'legacy']) [rainerscript] configuration format to use.
- :format (String) ['<%= $content %>'] The content format. Defaults to epp template code.
Default value: {}
legacy_config
Data type: Hash
Hash of rsyslog configuration in the legacy format.
- :name (String) [undef] Na,e of the legacy configuration option.
- :priority (Integer) [10] Sets where in the config the option will be placed in the target file.
- :target (String) [50_rsyslog.conf] File to place the conf
- :value (String) [] Value of the configuration item
- :confdir (String) [/etc/rsyslog.d] The configuration directory where config file exists.
- :key (String) [legacy_key] The rsyslog legacy configuration key name
- :type (String) [sysklogd] The type of legacy configuration it is.
- :format (String) ['<%= $content %>'] The content format. Defaults to epp template code.
Default value: {}
templates
Data type: Hash
Hash of rsyslog templates.
- :name (String) [undef] Name of the global configuration option to set.
- :priority (Integer) [10] Sets where in the config the option will be placed in the target file.
- :target (String) [50_rsyslog.conf] File to place the conf
- :confdir (String) [/etc/rsyslog.d] Directory where the configuration file exists.
- :type (Enum['string', 'list', 'subtree', 'plugin']) [undef] Rsyslog template type.
- :list_descriptions (Array) [[]] An array of hashes representing list template constants and properties
- :string (String) [''] String value for a String template.
- :subtree (String) [''] String representation of the subtree value.
- :plugin (String) [''] Name of the plugin the template will use.
- :options (Hash) [{}] Hash of additional template options.
- :format (String) ['<%= $content %>'] The content format. Defaults to epp template code.
Default value: {}
actions
Data type: Hash
Hash of rsyslog actions.
- :name (String) [undef] Name of the global configuration option to set.
- :priority (Integer) [10] Sets where in the config the option will be placed in the target file.
- :target (String) [50_rsyslog.conf] File to place the conf
- :confdir (String) [/etc/rsyslog.d] Directory where the configuration file exists.
- :type (String) [undef] Type of output module the action will use.
- :config (Optional[Hash]) [undef] A hash of output module specific configuration options.
- :facility (String) ['default'] The syslog facility to use when outputting this action.
- :format (String) ['<%= $content %>'] The content format. Defaults to epp template code.
Default value: {}
inputs
Data type: Hash
Hash of rsyslog input plugins to use.
- :name (String) [undef] Name of the global configuration option to set.
- :priority (Integer) [10] Sets where in the config the option will be placed in the target file.
- :target (String) [50_rsyslog.conf] File to place the conf
- :confdir (String) [/etc/rsyslog.d] Directory where the configuration file exists.
- :type (String) [undef] The name of the input module to use.
- :config (Optional[Hash]) [undef] Hash of input module specific configuration settings. Depends on value of type
- :format (String) ['<%= $content %>'] The content format. Defaults to epp template code.
Default value: {}
custom_config
Data type: Hash
Hash of custom raw configuration to place in the rsyslog config file.
- :name (String) [undef] Name of the global configuration option to set.
- :priority (Integer) [10] Sets where in the config the option will be placed in the target file.
- :target (String) [50_rsyslog.conf] File to place the conf
- :confdir (String) [/etc/rsyslog.d] Directory where the configuration file exists.
- :content (String) [undef] The single/multi-line string representing the config.
Default value: {}
main_queue_opts
Data type: Hash
Default value: {}
modules
Data type: Hash
Default value: {}
lookup_tables
Data type: Hash
Default value: {}
parsers
Data type: Hash
Default value: {}
rulesets
Data type: Hash
Default value: {}
property_filters
Data type: Hash
Default value: {}
expression_filters
Data type: Hash
Default value: {}
rsyslog::config::actions
The rsyslog::config::actions class.
rsyslog::config::custom
The rsyslog::config::custom class.
rsyslog::config::expression_filters
The rsyslog::config::expression_filters class.
rsyslog::config::global
The rsyslog::config::global class.
rsyslog::config::inputs
The rsyslog::config::inputs class.
rsyslog::config::legacy
The rsyslog::config::legacy class.
rsyslog::config::lookup_tables
The rsyslog::config::lookup_tables class.
rsyslog::config::main_queue
The rsyslog::config::main_queue class.
rsyslog::config::modules
The rsyslog::config::modules class.
rsyslog::config::parsers
The rsyslog::config::parsers class.
rsyslog::config::property_filters
The rsyslog::config::property_filters class.
rsyslog::config::rulesets
The rsyslog::config::rulesets class.
rsyslog::config::templates
The rsyslog::config::templates class.
Defined types
rsyslog::component::action
The rsyslog::component::action class.
Parameters
The following parameters are available in the rsyslog::component::action
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
type
Data type: String
config
Data type: Hash
Default value: {}
facility
Data type: String[1]
Default value: 'default'
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::custom_config
This is a catch-all definition for use in edge cases where some code needs inserting somewhere in rsyslog.d according to priority but cannot be modelled with any of the shipped models.
Parameters
The following parameters are available in the rsyslog::component::custom_config
defined type:
content
Data type: String
priority
Data type: Integer
Default value: $rsyslog::custom_priority
target
Data type: String
Default value: "${name}.conf"
confdir
Data type: String
Default value: $rsyslog::confdir
filename_part
Data type: String
Default value: $name
rsyslog::component::expression_filter
The rsyslog::component::expression_filter class.
Parameters
The following parameters are available in the rsyslog::component::expression_filter
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
conditionals
Data type: Hash
format
Data type: String
Default value: '<%= $content %>'
rsyslog::component::global_config
The rsyslog::component::global_config class.
Parameters
The following parameters are available in the rsyslog::component::global_config
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
value
Data type: Optional[String[1]]
Default value: undef
config
Data type: Hash
Default value: {}
type
Data type: String[1]
Default value: 'rainerscript'
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::input
The rsyslog::component::input class.
Parameters
The following parameters are available in the rsyslog::component::input
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
type
Data type: String
config
Data type: Hash
Default value: {}
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::legacy_config
The rsyslog::component::legacy_config class.
Parameters
The following parameters are available in the rsyslog::component::legacy_config
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
value
Data type: String
key
Data type: String[1]
Default value: 'legacy_key'
type
Data type: String[1]
Default value: 'sysklogd'
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::lookup_table
The rsyslog::component::lookup_table class.
Parameters
The following parameters are available in the rsyslog::component::lookup_table
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
lookup_json
Data type: Hash
lookup_file
Data type: Stdlib::AbsolutePath
reload_on_hup
Data type: Boolean
rsyslog_in_docker
Data type: Boolean
Default value: false
json_file
Data type: Optional[Stdlib::AbsolutePath]
Default value: undef
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::main_queue
The rsyslog::component::main_queue class.
Parameters
The following parameters are available in the rsyslog::component::main_queue
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
config
Data type: Hash
rsyslog::component::module
The rsyslog::component::module class.
Parameters
The following parameters are available in the rsyslog::component::module
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
config
Data type: Hash
Default value: {}
type
Data type: String[1]
Default value: 'external'
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::parser
The rsyslog::component::parser class.
Parameters
The following parameters are available in the rsyslog::component::parser
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
type
Data type: String
config
Data type: Hash
Default value: {}
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::property_filter
The rsyslog::component::property_filter class.
Parameters
The following parameters are available in the rsyslog::component::property_filter
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
property
Data type: String
operator
Data type: Rsyslog::PropertyOperator
value
Data type: String
tasks
Data type: Array
Default value: []
format
Data type: String
Default value: '<%= $content %>'
rsyslog::component::ruleset
The rsyslog::component::ruleset class.
Parameters
The following parameters are available in the rsyslog::component::ruleset
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
rules
Data type: Array
Default value: []
stop
Data type: Boolean
Default value: false
parameters
Data type: Hash
Default value: {}
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::component::template
The rsyslog::component::template class.
Parameters
The following parameters are available in the rsyslog::component::template
defined type:
priority
Data type: Integer
target
Data type: String
confdir
Data type: String
type
Data type: Enum['string', 'list', 'subtree', 'plugin']
list_descriptions
Data type: Array
Default value: []
string
Data type: String
Default value: ''
subtree
Data type: String
Default value: ''
plugin
Data type: String
Default value: ''
options
Data type: Hash
Default value: {}
format
Data type: String[1]
Default value: '<%= $content %>'
rsyslog::generate_concat
The rsyslog::generate_concat class.
Parameters
The following parameters are available in the rsyslog::generate_concat
defined type:
confdir
Data type: String
target
Data type: String
Data types
Rsyslog::Actions
Struct data type alias for Rsyslog Actions
Alias of
Array[Struct[{
name => String[1],
type => Rsyslog::Modules::Output,
facility => Optional[String[1]],
action_params => Optional[Rsyslog::Actions::Parameters],
queue_params => Optional[Rsyslog::Queue::Parameters],
output_params => Optional[Variant[
Rsyslog::Actions::Outputs::Omamqp1,
Rsyslog::Actions::Outputs::Omelasticsearch,
Rsyslog::Actions::Outputs::Omfile,
Rsyslog::Actions::Outputs::Omfwd,
Rsyslog::Actions::Outputs::Omhiredis,
Rsyslog::Actions::Outputs::Omhttpfs,
Rsyslog::Actions::Outputs::Omjournal,
Rsyslog::Actions::Outputs::Omkafka,
Rsyslog::Actions::Outputs::Omlibdbi,
Rsyslog::Actions::Outputs::Ommail,
Rsyslog::Actions::Outputs::Ommongodb,
Rsyslog::Actions::Outputs::Ommysql,
Rsyslog::Actions::Outputs::Ompgsql,
Rsyslog::Actions::Outputs::Ompipe,
Rsyslog::Actions::Outputs::Omprog,
Rsyslog::Actions::Outputs::Omrelp,
Rsyslog::Actions::Outputs::Omsnmp,
Rsyslog::Actions::Outputs::Omudpspoof,
Rsyslog::Actions::Outputs::Omusrmsg,
]],
}]]
Rsyslog::Actions::Outputs::Omamqp1
The Rsyslog::Actions::Outputs::Omamqp1 data type.
Alias of
Struct[{
host => String[1],
target => String[1],
username => Optional[String[1]],
password => Optional[String[1]],
template => Optional[String[1]],
idletimeout => Optional[Integer],
reconnectdelay => Optional[Integer],
maxretries => Optional[Integer],
disablesasl => Optional[Integer],
}]
Rsyslog::Actions::Outputs::Omelasticsearch
The Rsyslog::Actions::Outputs::Omelasticsearch data type.
Alias of
Struct[{
server => Optional[Variant[Stdlib::Host, Array[Stdlib::Host]]],
serverport => Optional[Stdlib::Port],
healthchecktimeout => Optional[Integer],
searchindex => Optional[String[1]],
dynsearchindex => Optional[Enum['on', 'off']],
searchtype => Optional[String[1]],
dynsearchtype => Optional[Enum['on', 'off']],
pipelinename => Optional[String[1]],
dynpipelinename => Optional[Enum['on', 'off']],
usehttps => Optional[Enum['on', 'off']],
timeout => Optional[Pattern[/^([0-9]+)(ms|s|m)$/]],
template => Optional[String[1]],
bulkmode => Optional[Enum['on', 'off']],
maxbytes => Optional[Pattern[/^([0-9]+)[kKmMgGtT]$/]],
parent => Optional[String[1]],
dynparent => Optional[Enum['on', 'off']],
uid => Optional[String[1]],
pwd => Optional[String[1]],
errorfile => Optional[Stdlib::Absolutepath],
'tls.cacert' => Optional[Stdlib::Absolutepath],
'tls.mycert' => Optional[Stdlib::Absolutepath],
'tls.myprivkey' => Optional[Stdlib::Absolutepath],
bulkid => Optional[String[1]],
dynbulkid => Optional[Enum['on', 'off']],
writeoperation => Optional[Enum['index', 'create']],
retryfailures => Optional[Enum['on', 'off']],
retryruleset => Optional[String[1]],
'ratelimit.interval' => Optional[Integer],
'ratelimit.burst' => Optional[Integer],
}]
Rsyslog::Actions::Outputs::Omfile
The Rsyslog::Actions::Outputs::Omfile data type.
Alias of
Struct[{
file => Optional[Stdlib::Absolutepath],
dynafile => Optional[String[1]],
template => Optional[String[1]],
closetimeout => Optional[Integer],
dynafilecachesize => Optional[Integer],
ziplevel => Optional[Integer],
veryrobustzip => Optional[Enum['on', 'off']],
flushinterval => Optional[Integer],
asyncwriting => Optional[Enum['on', 'off']],
flushontxend => Optional[Enum['on', 'off']],
iobuffersize => Optional[Pattern[/^([0-9]+)[kKmMgGtT]$/]],
dirowner => Optional[String[1]],
dirownernum => Optional[Integer],
dirgroup => Optional[String[1]],
dirgroupnum => Optional[Integer],
fileowner => Optional[String[1]],
fileownernum => Optional[Integer],
filegroup => Optional[String[1]],
filegroupnum => Optional[Integer],
filecreatemode => Optional[Pattern[/^(([0-7]{1,4})*)$/]],
dircreatemode => Optional[Pattern[/^(([0-7]{1,4})*)$/]],
failonchownfailure => Optional[Enum['on', 'off']],
createdirs => Optional[Enum['on', 'off']],
sync => Optional[Enum['on', 'off']],
'sig.provider' => Optional[Enum['ksi_ls12']],
'cry.provider' => Optional[Enum['gcry']],
}]
Rsyslog::Actions::Outputs::Omfwd
The Rsyslog::Actions::Outputs::Omfwd data type.
Alias of
Struct[{
target => Optional[Stdlib::Host],
port => Optional[Stdlib::Port],
protocol => Optional[Enum['tcp', 'udp', 'ossl', 'gtls']],
networknamespace => Optional[String[1]],
address => Optional[Stdlib::IP::Address],
ipfreebind => Optional[Integer[0, 2]],
device => Optional[String[1]],
tcp_framing => Optional[Enum['traditional', 'octet-counted']],
tcp_framedelimiter => Optional[Integer[0, 255]],
ziplevel => Optional[Integer[0, 9]],
'compression.mode' => Optional[Enum['none', 'single', 'stream:always']],
'compression.stream.flushontxend' => Optional[Enum['on', 'off']],
rebindinterval => Optional[Integer],
keepalive => Optional[Enum['on', 'off']],
'keepalive.probes' => Optional[Integer],
'keepalive.interval' => Optional[Integer],
'keepalive.time' => Optional[Integer],
streamdriver => Optional[Enum['tcp', 'ossl', 'gtls']],
streamdrivermode => Optional[Integer],
streamdriverauthmode => Optional[String[1]],
streamdriverpermittedpeers => Optional[String[1]],
resendlastmsgonreconnect => Optional[Enum['on', 'off']],
'udp.sendtoall' => Optional[Enum['on', 'off']],
'udp.senddelay' => Optional[Integer],
gnutlsprioritystring => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Omhiredis
The Rsyslog::Actions::Outputs::Omhiredis data type.
Alias of
Struct[{
server => Optional[Stdlib::Host],
serverport => Optional[Stdlib::Port],
serverpassword => Optional[String[1]],
mode => Optional[Enum['queue', 'publish', 'template']],
template => Optional[String[1]],
key => Optional[String[1]],
userpush => Optional[Enum['on', 'off']]
}]
Rsyslog::Actions::Outputs::Omhttpfs
The Rsyslog::Actions::Outputs::Omhttpfs data type.
Alias of
Struct[{
host => Optional[Stdlib::Host],
port => Optional[Stdlib::Port],
user => Optional[String[1]],
https => Optional[Enum['on', 'off']],
file => String[1],
isdynfile => Optional[Enum['on', 'off']],
template => Optional[String[1]]
}]
Rsyslog::Actions::Outputs::Omjournal
Struct data type for the Rsyslog JournalD module's Action options
Alias of
Struct[{
template => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Omkafka
Struct data type for the Rsyslog Kafka module's Action options
Alias of
Struct[{
broker => Optional[String[1]],
topic => String[1],
key => Optional[String[1]],
dynatopic => Optional[Enum['on', 'off']],
'dynatopic.cachesize' => Optional[Integer],
'partitions.auto' => Optional[Enum['on', 'off']],
'partitions.number' => Optional[Integer],
'partitions.usefixed' => Optional[Integer],
errorfile => Optional[String[1]],
confparam => Optional[Array[String[1]]],
topicconfparam => Optional[Array[String[1]]],
template => Optional[String[1]],
closetimeout => Optional[Integer],
resubmitonfailure => Optional[Enum['on', 'off']],
keepfailedmessages => Optional[Enum['on', 'off']],
failedmsgfile => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Omlibdbi
Struct data type for the Rsyslog libdbi module's Action options
Alias of
Struct[{
driver => Enum[
'firebird',
'ingres',
'msql',
'Oracle',
'sqlite',
'sqlite3',
'freetds',
],
server => Stdlib::Host,
uid => String[1],
pwd => String[1],
db => String[1],
template => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Ommail
Struct data type for the Rsyslog E-Mail module's Action options
Alias of
Struct[{
server => Stdlib::Host,
port => Stdlib::Port,
mailfrom => Pattern[/.+@.+\..+/],
mailto => Pattern[/.+@.+\..+/],
'subject.template' => Optional[String[1]],
'subject.text' => Optional[String[1]],
'body.enable' => Optional[Enum['on', 'off']],
template => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Ommongodb
Struct data type for the Rsyslog MongoDB output module's Action options
Alias of
Struct[{
uristr => Optional[String[1]],
ssl_cert => Optional[Stdlib::Absolutepath],
ssl_ca => Optional[Stdlib::Absolutepath],
db => Optional[String[1]],
collection => Optional[String[1]],
allowed_error_codes => Optional[Array[String[1]]],
template => Optional[String[1]],
server => Optional[Stdlib::Host],
serverported => Optional[Stdlib::Port],
uid => Optional[String[1]],
pwd => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Ommysql
Struct data type alias for MySQL Rsyslog output module.
- See also
- https://www.rsyslog.com/doc/v8-stable/configuration/modules/ommysql.html
- Rsyslog MySQL output module
Alias of
Struct[{
server => Stdlib::Host,
socket => Optional[Stdlib::Absolutepath],
db => String[1],
uid => String[1],
pwd => String[1],
serverport => Optional[Stdlib::Port],
'mysqlconfig.file' => Optional[Stdlib::Absolutepath],
'mysqlconfig.section' => Optional[String[1]],
template => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Ompgsql
Struct data type for the Rsyslog PostgreSQL module's Action options
Not allowing the serverport, uid, or pwd rsyslog options as they are identical to port, user, and pass respectively. The latter make more sense to the general user and the former are redundant.
Alias of
Struct[{
server => Stdlib::Host,
port => Optional[Stdlib::Port],
db => String[1],
user => Optional[String[1]],
pass => Optional[String[1]],
template => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Ompipe
Struct data type for the Rsyslog Pipe module's Action options
Alias of
Struct[{
pipe => String[1],
}]
Rsyslog::Actions::Outputs::Omprog
Struct data type for the Rsyslog Program module's Action options
Alias of
Struct[{
template => Optional[String[1]],
binary => Stdlib::Absolutepath,
confirmmessages => Optional[Enum['on', 'off']],
confirmtimeout => Optional[Integer],
reportfailures => Optional[Enum['on', 'off']],
usetransactions => Optional[Enum['on', 'off']],
begintransactionmark => Optional[String[1]],
committransactionmark => Optional[String[1]],
output => Optional[Stdlib::Absolutepath],
filecreatemode => Optional[Stdlib::Filemode],
'hup.signal' => Optional[Enum['HUP', 'USR1', 'USR2', 'INT', 'TERM']],
signalonclose => Optional[Enum['on', 'off']],
closetimeout => Optional[Integer],
killunresponsive => Optional[Enum['on', 'off']],
forcesingleinstance => Optional[Enum['on', 'off']],
}]
Rsyslog::Actions::Outputs::Omrelp
Struct data type for the Rsyslog RELP module's Action options
Alias of
Struct[{
target => Variant[Stdlib::Fqdn, Stdlib::IP::Address],
port => Optional[Stdlib::Port],
template => Optional[String[1]],
timeout => Optional[Integer],
'conn.timeout' => Optional[Integer],
rebindinterval => Optional[Integer],
windowsize => Optional[Integer],
tls => Optional[Enum['on', 'off']],
'tls.compression' => Optional[Enum['on', 'off']],
'tls.permittedpeer' => Optional[Array[String[1]]],
'tls.automode' => Optional[Enum['fingerprint', 'name']],
'tls.cacert' => Optional[Stdlib::Absolutepath],
'tls.mycert' => Optional[Stdlib::Absolutepath],
'tls.myprivkey' => Optional[Stdlib::Absolutepath],
'tls.prioritystring' => Optional[String[1]],
localclientip => Optional[Stdlib::IP::Address],
}]
Rsyslog::Actions::Outputs::Omsnmp
Struct data type for the Rsyslog SNMP module's Action options
Alias of
Struct[{
server => Stdlib::Host,
port => Optional[Stdlib::Port],
transport => Optional[String[1]],
version => Optional[Integer[0,1]],
community => Optional[String[1]],
trapoid => Optional[String[1]],
messageoid => Optional[String[1]],
enterpriseoid => Optional[String[1]],
specifictype => Optional[Integer],
traptype => Optional[Integer[0,6]],
}]
Rsyslog::Actions::Outputs::Omudpspoof
Struct data type for the Rsyslog UDP Spoof module's Action options
Alias of
Struct[{
target => Stdlib::Host,
port => Optional[Stdlib::Port],
sourcetemplate => Optional[String[1]],
'sourceport.start' => Optional[Stdlib::Port],
'sourceport.end' => Optional[Stdlib::Port],
mtu => Optional[Integer],
template => Optional[String[1]],
}]
Rsyslog::Actions::Outputs::Omusrmsg
Struct data type for the Rsyslog User MSG module's Action Parameters.
Alias of
Struct[{
users => String[1],
template => Optional[String[1]],
}]
Rsyslog::Actions::Parameters
Struct data type for general Rsyslog Action parameters
- See also
- https://www.rsyslog.com/doc/v8-stable/configuration/actions.html#general-action-parameters
- Rsyslog General Action Parameters
Alias of
Struct[{
'action.writeallmarkmessages' => Optional[Enum['on', 'off']],
'action.execonlyeverynthtime' => Optional[Integer],
'action.execonlyeverynthtimeout' => Optional[Integer],
'action.errorfile' => Optional[Stdlib::Absolutepath],
'action.execonlyonceeveryinterval' => Optional[Integer],
'action.execonlywhenpreviousissuspended' => Optional[Enum['on', 'off']],
'action.repeatedmsgcontainsoriginalmsg' => Optional[Enum['on', 'off']],
'action.resumeretrycount' => Optional[Integer],
'action.resumeinterval' => Optional[Integer],
'action.reportsuspension' => Optional[Enum['on', 'off']],
'action.reportsuspensioncontinuation' => Optional[Enum['on', 'off']],
'action.copymsg' => Optional[Enum['on', 'off']]
}]
Rsyslog::Inputs::Imbatchreports
Data type for Rsyslog Input module parameters for batch report inputs.
Alias of
Struct[{
reports => String[1],
tag => String[1],
facility => Optional[Stdlib::Syslogfacility],
severity => Optional[Rsyslog::Syslog::Severity],
deduplicatespaces => Optional[Enum['on', 'off']],
delete => Optional[String[1]],
rename => Optional[String[1]],
programkey => Optional[String[1]],
timestampkey => Optional[String[1]],
}]
Rsyslog::Inputs::Imfile
Data type for Rsyslog Input module input parameters for file inputs.
Alias of
Struct[{
file => String[1],
tag => String[1],
facility => Optional[Stdlib::Syslogfacility],
severity => Optional[Rsyslog::Syslog::Severity],
persiststateinterval => Optional[Integer],
'startmsg.regex' => Optional[String[1]],
'endmsg.regex' => Optional[String[1]],
readtimeout => Optional[Integer],
readmode => Optional[Integer[0, 2]],
escapelf => Optional[Enum['on', 'off']],
maxlinesatonce => Optional[Integer],
maxsubmitatonce => Optional[Integer],
deletestateonfiledelete => Optional[Enum['on', 'off']],
ruleset => Optional[String[1]],
addmetadata => Optional[Enum['on', 'off']],
addceetag => Optional[Enum['on', 'off']],
reopenontruncate => Optional[Enum['on', 'off']],
trimlineoverbytes => Optional[Integer],
freshstarttail => Optional[Enum['on', 'off']],
discardtruncatedmsg => Optional[Enum['on', 'off']],
msgdiscardingerror => Optional[Enum['on', 'off']],
neeparse => Optional[Enum['on', 'off']],
}]
Rsyslog::Inputs::Imgssapi
Data type for Rsyslog Input module input parameters for gssapi.
Alias of
Struct[{
inputgssserverrun => Optional[Stdlib::Port],
inputgssserverservicename => Optional[String[1]],
inputgssserverpermitplaintcp => Optional[Enum['on', 'off']],
inputgssservermaxsessions => Optional[Integer],
inputgssserverkeepalive => Optional[Enum['on', 'off']],
inputgsslistenportfilename => Optional[Stdlib::Port],
}]
Rsyslog::Inputs::Imkafka
Data type for Rsyslog Input module input parameters for Apache Kafka.
Alias of
Struct[{
broker => Optional[String[1]],
topic => String[1],
confparam => Optional[Array[String[1]]],
consumergroup => Optional[String[1]],
ruleset => Optional[String[1]],
parsehostname => Optional[Enum['on', 'off']],
}]
Rsyslog::Inputs::Improg
Data type for Rsyslog Input module input parameters for Program input
Alias of
Struct[{
binary => String[1],
tag => String[1],
facility => Optional[Stdlib::Syslogfacility],
severity => Optional[Rsyslog::Syslog::Severity],
confirmmessages => Optional[Enum['on', 'off']],
signalonclose => Optional[Enum['on', 'off']],
closetimeout => Optional[Integer],
killunresponsive => Optional[Enum['on', 'off']],
}]
Rsyslog::Inputs::Imptcp
Data type for Rsyslog Plain TCP input module
Alias of
Struct[{
port => Optional[Stdlib::Port],
path => Optional[Stdlib::Absolutepath],
discardtruncatedmsg => Optional[Enum['on', 'off']],
fileowner => Optional[String[1]],
fileownernum => Optional[Integer],
filegroup => Optional[String[1]],
filegroupnum => Optional[Integer],
filecreatemode => Optional[Stdlib::Filemode],
failonchownfailure => Optional[Enum['on', 'off']],
unlink => Optional[Enum['on', 'off']],
name => Optional[String[1]],
ruleset => Optional[String[1]],
maxframesize => Optional[Integer],
address => Optional[Stdlib::IP::Address::V4],
addtlframedelimiter => Optional[Integer],
supportoctetcountetframing => Optional[Enum['on', 'off']],
notifyonconnectionclose => Optional[Enum['on', 'off']],
notifyonconnectionopen => Optional[Enum['on', 'off']],
keepalive => Optional[Enum['on', 'off']],
'keepalive.probes' => Optional[Integer],
'keepalive.interval' => Optional[Integer],
'keepalive.time' => Optional[Integer],
'ratelimit.interval' => Optional[Integer],
'ratelimit.burst' => Optional[Integer],
'compression.mode' => Optional[Enum['none', 'single', 'stream:always']],
flowcontrol => Optional[Enum['on', 'off']],
multiline => Optional[Enum['on', 'off']],
'framing.delimiter.regex' => Optional[String[1]],
socketbacklog => Optional[Integer],
defaulttz => Optional[String[1]],
'framingfix.cisco.asa' => Optional[Enum['on', 'off']],
listenportfilename => Optional[String[1]],
}]
Rsyslog::Inputs::Imrelp
Data type for Rsyslog Plain TCP input module
Alias of
Struct[{
port => Stdlib::Port,
address => Optional[Stdlib::IP::Address::V4],
name => Optional[String[1]],
ruleset => Optional[String[1]],
maxdatasize => Optional[Pattern[/^([0-9]+)[kKmMgGtT]$/]],
tls => Optional[Enum['on', 'off']],
'tls.compression' => Optional[Enum['on', 'off']],
'tls.dhbits' => Optional[Integer],
'tls.permittedpeer' => Optional[Array[String[1]]],
'tls.authmode' => Optional[Enum['fingerprint', 'name']],
'tls.cacert' => Optional[String[1]],
'tls.mycert' => Optional[String[1]],
'tls.myprivkey' => Optional[String[1]],
'tls.prioritystring' => Optional[String[1]],
keepalive => Optional[Enum['on', 'off']],
'keepalive.probes' => Optional[Integer],
'keepalive.interval' => Optional[Integer],
'keepalive.time' => Optional[Integer],
oversizemode => Optional[Enum['truncate', 'abort', 'accept']],
}]
Rsyslog::Inputs::Imtcp
Data type for Rsyslog TCP input module
Alias of
Struct[{
port => Stdlib::Port,
address => Optional[Stdlib::IP::Address::V4],
name => Optional[String[1]],
ruleset => Optional[String[1]],
supportoctetcountedframing => Optional[Enum['on', 'off']],
'ratelimit.interval' => Optional[Integer],
'ratelimit.burst' => Optional[Integer],
listenportfilename => Optional[String[1]],
}]
Rsyslog::Inputs::Imtuxedoulog
Data for Rsyslog Input Tuxedo ULOG module
Alias of
Struct[{
ulogbase => Stdlib::Absolutepath,
tag => String[1],
facility => Optional[Stdlib::Syslogfacility],
severity => Optional[Rsyslog::Syslog::Severity],
persiststateinterval => Optional[Integer],
maxlinesatonce => Optional[Integer],
maxsubmitatonce => Optional[Integer],
}]
Rsyslog::Inputs::Imudp
Data type for Rsyslog UDP input module
Alias of
Struct[{
address => Optional[Stdlib::Host],
port => Stdlib::Port,
ipfreebind => Optional[Integer[0,2]],
device => Optional[String[1]],
ruleset => Optional[String[1]],
'ratelimit.interval' => Optional[Integer],
'ratelimit.burst' => Optional[Integer],
name => Optional[String[1]],
'name.appendport' => Optional[Enum['on', 'off']],
defaulttz => Optional[String[1]],
rcvbufsize => Optional[Variant[Integer, String[1]]],
}]
Rsyslog::Inputs::Imuxsock
Data type for Rsyslog Unix Socket input module
Alias of
Struct[{
ruleset => Optional[String[1]],
ignoretimestamp => Optional[Enum['on', 'off']],
ignoreownmessages => Optional[Enum['on', 'off']],
flowcontrol => Optional[Enum['on', 'off']],
'ratelimit.interval' => Optional[Integer],
'ratelimit.burst' => Optional[Integer],
'ratelimit.severity' => Optional[Integer[0,7]],
usepidfromsystem => Optional[Enum['on', 'off']],
usesystimestamp => Optional[Enum['on', 'off']],
createpath => Optional[Enum['on', 'off']],
socket => Optional[String[1]],
hostname => Optional[String[1]],
annotate => Optional[Enum['on', 'off']],
parsetrusted => Optional[Enum['on', 'off']],
unlink => Optional[Enum['on', 'off']],
usespecialparser => Optional[Enum['on', 'off']],
parsehostname => Optional[Enum['on', 'off']],
}]
Rsyslog::Modules::Input
The Rsyslog::Modules::Input data type.
Alias of Enum['im3195', 'imfile', 'imgssapi', 'imjournal', 'imkafka', 'imklog', 'imkmsg', 'immark', 'impstats', 'imptcp', 'imrelp', 'imsolaris', 'imtcp', 'imupd', 'imuxsock']
Rsyslog::Modules::Inputs::Imdocker
Data type for Rsyslog module parameters for imdocker
Alias of
Struct[{
dockerapiunixsockaddr => Optional[Stdlib::Absolutepath],
apiversionstr => Optional[Pattern[/^v([0-9]+)\.([0-9]+)/]],
pollinginterval => Optional[Integer],
listcontaineroptions => Optional[String[1]],
getcontainerlogoptions => Optional[String[1]],
retrievenewlogsfromstart => Optional[Integer[0,1]],
defaultfacility => Optional[Stdlib::Syslogfacility],
defaultseverity => Optional[Rsyslog::Syslog::Severity],
escapelf => Optional[Enum['on', 'off']],
}]
Rsyslog::Modules::Inputs::Imfile
Data type for Rsyslog Input module parameters for file inputs.
Alias of
Struct[{
mode => Optional[Enum['inotify', 'polling']],
readtimeout => Optional[Integer],
timeoutgranularity => Optional[Enum['on', 'off']],
sortfiles => Optional[Enum['on', 'off']],
pollinginterval => Optional[Integer],
}]
Rsyslog::Modules::Inputs::Imjournal
Rsyslog imjournal Module parameter data type
Alias of
Struct[{
persiststateinterval => Optional[Integer],
statefile => Optional[Stdlib::Absolutepath],
'ratelimit.interval' => Optional[Integer],
'ratelimit.burst' => Optional[Integer],
ignorepreviousmessage => Optional[Enum['on', 'off']],
defaultseverity => Optional[Rsyslog::Syslog::Severity],
defaultfacility => Optional[Stdlib::Syslogfacility],
usepidfromsystem => Optional[Enum['on', 'off']],
usepid => Optional[Enum['syslog', 'system', 'both']],
ignorenonvalidstatefile => Optional[Enum['on', 'off']],
workaroundjournalbug => Optional[Enum['on', 'off']],
}]
Rsyslog::Modules::Message
The Rsyslog::Modules::Message data type.
Alias of Enum['mmanon', 'mmcount', 'mmdblookup', 'mmexternal', 'mmfields', 'mmjsonparse', 'mmkubernetes', 'mmnormalize', 'mmpstructdata', 'mmrfc5424addhmac', 'mmrm1stspace', 'mmsequence', 'mmsnmptrapd', 'mmutf8fix']
Rsyslog::Modules::Output
The Rsyslog::Modules::Output data type.
Alias of Enum['omamqp1', 'omelasticsearch', 'omfile', 'omfwd', 'omhdfs', 'omhiredis', 'omhttpfs', 'omjournal', 'omkafka', 'omlibdbi', 'ommail', 'ommongodb', 'ommysql', 'ompgsql', 'ompipe', 'omprog', 'omrelp', 'omsnmp', 'omudpspoof', 'omusrmsg', 'omuxsock']
Rsyslog::Modules::Parser
The Rsyslog::Modules::Parser data type.
Alias of Enum['pmciscoios', 'pmlastmsg', 'pmnormalize', 'pmnull', 'pmrfc3164', 'pmrfc3164sd', 'pmrfc5424']
Rsyslog::Modules::String
The Rsyslog::Modules::String data type.
Alias of Enum['smfile', 'smfwd', 'smtradfile', 'smtradfwd']
Rsyslog::PropertyOperator
Enumerable custom type for rsyslog property operators
Alias of Enum['contains', 'isequal', 'startswith', 'regex', 'ereregex', '!contains', '!isequal', '!startswith', '!regex', '!ereregex']
Rsyslog::Queue::Parameters
The Rsyslog::Queue::Parameters data type.
Alias of
Struct[{
'queue.filename' => Optional[String[1]],
'queue.spoolDirectory' => Optional[Stdlib::Absolutepath],
'queue.size' => Optional[Integer],
'queue.dequeueBatchSize' => Optional[Integer],
'queue.maxDiskSpace' => Optional[Integer],
'queue.highWatermark' => Optional[Integer],
'queue.lowWatermark' => Optional[Integer],
'queue.fullDelaymark' => Optional[Integer],
'queue.lightDelaymark' => Optional[Integer],
'queue.discardMark' => Optional[Integer],
'queue.discardSeverity' => Optional[Integer],
'queue.checkpointInterval' => Optional[Integer],
'queue.syncqueuefiles' => Optional[Enum['on', 'off']],
'queue.samplingInterval' => Optional[Integer],
'queue.type' => Optional[Enum['FixedArray', 'LinkedList', 'Direct', 'Disk']],
'queue.workerThreads' => Optional[Integer],
'queue.workerThreadMinimumMessages' => Optional[Integer],
'queue.timeoutWorkerthreadShutdown' => Optional[Integer],
'queue.timeoutshutdown' => Optional[Integer],
'queue.timeoutActionCompletion' => Optional[Integer],
'queue.timeoutEnqueue' => Optional[Integer],
'queue.maxFileSize' => Optional[Pattern[/^([0-9]+)(m|M|g|G)$/]],
'queue.saveOnShutdown' => Optional[Enum['on', 'off']],
'queue.dequeueSlowDown' => Optional[Integer],
'queue.dequeueTimeBegin' => Optional[Integer[1, 24]],
'queue.dequeueTimeEnd' => Optional[Integer[1, 25]],
}]
Rsyslog::Syslog::Severity
Syslog severity data type
Alias of
Variant[Enum[
'emerg',
'alert',
'crit',
'err',
'warning',
'notice',
'info',
'debug',
], Integer[0, 7]]
Changelog
All notable changes to this project will be documented in this file. Each new release typically also includes the latest modulesync defaults. These should not affect the functionality of the module.
v7.1.0 (2023-10-20)
Implemented enhancements:
- metadata.json: allow puppetlabs-concat \< 10 #234 (kenyon)
- Update supported Fedora version to 38 #233 (kenyon)
- Add Puppet 8 support #228 (bastelfreak)
- Add warning to indicate that the files are managed by Puppet. #214 (bschonec)
Fixed bugs:
- fix f38 acceptance tests failing on rsyslog-elasticsearch #237 (jhoblitt)
- drop support for scientific linux 8 -- sl8 never existed #236 (jhoblitt)
- Fix CI on OracleLinux #231 (smortex)
- Fix old client/server model reference in README #209 (cruelsmith)
v7.0.1 (2023-06-18)
Fixed bugs:
Closed issues:
- Global config issue in 7.0.0 #223
Merged pull requests:
v7.0.0 (2023-06-06)
Breaking changes:
- Drop Debian 9 / Ubuntu 16.04 (EOL) #217 (smortex)
- Remove stdlib's legacy function usage #216 (smortex)
- Drop Puppet 6 support #215 (bastelfreak)
Implemented enhancements:
Merged pull requests:
v6.0.0 (2022-08-04)
Breaking changes:
Implemented enhancements:
- Add CentOS 9 to supported operating systems #195 (kajinamit)
- Add Puppet 7 support #188 (root-expert)
- Allow multiple array values for actions #184 (paramite)
Fixed bugs:
- Fix wrong condition to detect Ubuntu #200 (kajinamit)
- puppet-lint: Fix optional_default violations #183 (bastelfreak)
Merged pull requests:
v5.2.0 (2021-02-05)
Implemented enhancements:
Fixed bugs:
- Add service restart to rsyslog confdir file resource #177 (dhollinger)
Closed issues:
- Purging config files does not restart rsyslogd #172
Merged pull requests:
- Refactor base.pp #179 (alexjfisher)
- Update README with more Puppet DSL examples #169 (dhollinger)
v5.1.0 (2020-10-23)
Implemented enhancements:
- Cannot set syslog conf file and directory permissions #150
Fixed bugs:
- Can't create an expressión filter with more than one 'else if' #164
- Fix issues with the expression filter keys #165 (dhollinger)
Merged pull requests:
- Update several examples in documentation to include Puppet examples #166 (dhollinger)
- Let config values be an array in inputs #163 (amateo)
- Fix README.md typo #162 (arjenz)
- README: fix table of contents and section levels #158 (kenyon)
- modulesync 3.0.0 & puppet-lint updates #157 (bastelfreak)
- Add ability to modify conf file and directory permissions #155 (dhollinger)
v5.0.1 (2020-05-05)
v5.0.0 was never released to the forge due to an issue with the release process. v5.0.1 contains no functional changes.
Merged pull requests:
v5.0.0 (2020-02-05)
Breaking changes:
- Remove Client/Server model and just use config #136 (dhollinger)
Fixed bugs:
Closed issues:
- Documentation/comments at init.pp is wrong #141
- No way to not use hiera and how to create a separate configuration file per service? #138
- Client server split imposes unnecessary restrictions #122
Merged pull requests:
- Test for dependency cycles #135 (dhollinger)
- Several datatype changes #134 (dhollinger)
- Fix typo in conditionals example #130 (OlegPS)
v4.0.0 (2019-10-20)
Breaking changes:
- modulesync 2.7.0 and drop puppet 4 #115 (bastelfreak)
Implemented enhancements:
- Add remaining rsyslog module types #111 (dhollinger)
- Rsyslog Action Data Types and Queue Options #106 (dhollinger)
Fixed bugs:
- Ruleset expression filter: problem with documention #112
- Allow puppetlabs/concat 6.x, puppetlabs/stdlib 6.x #120 (dhoppe)
Closed issues:
Merged pull requests:
- Clean up acceptance spec helper #132 (ekohl)
- Add EL 8 support #129 (dhollinger)
- Generate REFERENCE.md #128 (bastelfreak)
- Add Input module data types #125 (dhollinger)
- types updates #124 (kenyon)
- base.pp: add final newline to rsyslog.conf #123 (kenyon)
- More input module data types #119 (dhollinger)
- Fix template output if value is array #118 (waipeng)
- Allow puppetlabs/apt 7.x #116 (dhoppe)
- Add imfile and im3195 input types #114 (dhollinger)
- #112 Fix ruleset expression filter examples #113 (dhollinger)
- README.md: correct default of rsyslog::confdir #105 (kenyon)
v3.3.0 (2018-10-14)
Implemented enhancements:
- warning with recent puppet #95
- Add '^' (execute program) rsyslog feature to ruleset tasks #80
- Allow puppetlabs/stdlib 5.x and puppetlabs/concat 5.x #94 (bastelfreak)
- Add Feature: Allow 'execute program' (^) as a task in in rulesets #81 (itbane)
Closed issues:
- imfile to send apache logs to remote syslog not working #102
- Error: Evaluation Error: Resource type not found: PrivDropToUser (file: /tmp/kitchen/manifests/site.pp, line: 141, column: 9) on node 21a40dd4ec00 #93
- check fedora support #84
- No clue how to configure a client with this module #64
Merged pull requests:
- Add support to use upstream repos in Ubuntu and EL #101 (dhollinger)
- Add support for puppet 6 #100 (dhollinger)
- Update metadata.json to remove hiera 4 and support Fedora, drop Ubuntu 14.04 support and add 18.04 #99 (dhollinger)
- Add a Debian 9 hiera exemple #96 (hdep)
v3.2.0 (2018-06-14)
Implemented enhancements:
- Add the ability to create custom properties with 'set' #86 (dhollinger)
- Add support to rsyslog::client for providing property_filters and exp… #78 (fatmcgav)
Merged pull requests:
- Update code to more cleanly format nested configuration #85 (dhollinger)
- drop EOL OSs; fix puppet version range #83 (bastelfreak)
- use gitrepos in .fixtures.yml #82 (bastelfreak)
- Rely on beaker-hostgenerator for docker nodesets #79 (ekohl)
v3.1.1 (2018-03-29)
Fixed bugs:
- Fix action template issue that causes an error when an empty config hash is passed #76 (dhollinger)
Merged pull requests:
v3.1.0 (2018-03-22)
Implemented enhancements:
- Add docker support for lookup_tables #73 (dhollinger)
v3.0.0 (2018-03-21)
Breaking changes:
- Switch datatype from Hash to array fo task param #71 (dhollinger)
Fixed bugs:
- Lookup table fix #70 (dhollinger)
v2.3.2 (2018-03-12)
Implemented enhancements:
- Filters require a unique name when used in rulesets. #65
- Test travis release fix #68 (dhollinger)
- Remove unique name requirement for Filters inside of a Ruleset resource #66 (dhollinger)
Merged pull requests:
- Release 2.3.2 #67 (dhollinger)
v2.3.1 (2018-02-24)
Fixed bugs:
- facility not present in out put of rulsets when using - action #59
- #59 Fix action facility bug #61 (dhollinger)
v2.3.0 (2018-01-24)
Implemented enhancements:
- Add new data type for property filter operators #54 (dhollinger)
Fixed bugs:
- Remove invalid property filter operators #55 (dhollinger)
Merged pull requests:
- Update documentation around filters #56 (dhollinger)
- Property filter operators #53 (dhollinger)
v2.2.1 (2018-01-05)
Closed issues:
Merged pull requests:
- Set concat order numeric #51 (dhollinger)
- Updated docs to correctly reflect the priority functionality #50 (dhollinger)
v2.2.0 (2018-01-04)
Implemented enhancements:
- Refactor rulesets #40 (dhollinger)
- Add filters #39 (dhollinger)
Closed issues:
- Add acceptance tests #43
- Add OS Compatibility matrix #42
- Add acceptance test config and helpers #41
- Refactor Rulesets and Filters #32
Merged pull requests:
- bump lowest puppet version 4.4.0->4.10.9 #48 (bastelfreak)
- Add unit and acceptance tests #44 (dhollinger)
v2.1.0 (2017-12-06)
Implemented enhancements:
- Add basic support for rsyslog filters in rulesets #31 (dhollinger)
Closed issues:
- Support Filters #30
Merged pull requests:
- Fix up README markdown and LICENSE file #37 (alexjfisher)
v2.0.0 (2017-12-06)
Merged pull requests:
- Add additional README.md shields #35 (dhollinger)
- modulesync 1.5.0 #34 (dhollinger)
1.1.0 (2017-10-17)
- Feature: Added an
external_service
boolean parameter for allowing puppet-rsyslog to manage configs/logs shared with other processes that may be managed by other modules. (https://github.com/crayfishx/puppet-rsyslog/pull/28)
1.0.0
This release contains many new enhancements and features, and brings the module to a 1.0.0 release. Many thanks to @dhollinger for the many contributions to this release.
- Enhancement: Added flag to enable/disable service management
- Enhancement: Add custom config dirs and target files
- Feature: Rsyslog 8.x lookup table support
- Feature: Support for the rsyslog parser() function
- Feature: Support for multi ruleset generation
- Feature: Support for ruleset stops
- Bugfix: Solve the lack of errors when a component concat::fragment doesn't generate content due to a missing parent concat resource
0.2.0
- Fixed variable scoping styling and rake validation fixes
- Support for legacy options
- README fixes
- Option support for modules
- Updated the action component to support logger facility
- Added more tests for the legacy_config / main_queue class
- Documentation Updates
- Fixed the global params config styling
* This Changelog was automatically generated by github_changelog_generator
Dependencies
- puppetlabs-apt (>= 5.0.0 < 10.0.0)
- puppetlabs-concat (>= 4.1.0 < 10.0.0)
- puppetlabs-stdlib (>= 4.25.0 < 10.0.0)
Copyright 2016 Craig Dunn <craig@craigdunn.org> Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.