Skip to content

Commit 5700fd4

Browse files
committed
BREAKING: Enhance data types
* Make use of stdlib data types * Create our own types for syslog facility and ssl version * Use proper booleans for `debug`, `dont_blame_nrpe` and `allow_bash_command_substitution` * Use `Enum['no', 'ask', 'require']` for `ssl_client_certs`
1 parent e477f66 commit 5700fd4

File tree

6 files changed

+124
-79
lines changed

6 files changed

+124
-79
lines changed

manifests/command.pp

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
#
22
define nrpe::command (
3-
String $command,
4-
Enum['present', 'absent'] $ensure = present,
5-
String $include_dir = $nrpe::include_dir,
6-
Variant[String, Array[String]] $package_name = $nrpe::package_name,
7-
String $service_name = $nrpe::service_name,
8-
String $libdir = $nrpe::params::libdir,
9-
String $file_group = $nrpe::params::nrpe_files_group,
10-
String $file_mode = $nrpe::command_file_default_mode,
11-
Boolean $sudo = false,
12-
String $sudo_user = 'root',
3+
String[1] $command,
4+
Enum['present', 'absent'] $ensure = present,
5+
Stdlib::Absolutepath $include_dir = $nrpe::include_dir,
6+
Variant[String[1], Array[String[1]]] $package_name = $nrpe::package_name,
7+
String[1] $service_name = $nrpe::service_name,
8+
Stdlib::Absolutepath $libdir = $nrpe::params::libdir,
9+
String[1] $file_group = $nrpe::params::nrpe_files_group,
10+
Stdlib::Filemode $file_mode = $nrpe::command_file_default_mode,
11+
Boolean $sudo = false,
12+
String[1] $sudo_user = 'root',
1313
) {
1414
file { "${include_dir}/${title}.cfg":
1515
ensure => $ensure,

manifests/init.pp

+71-59
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,41 @@
1919
# Copyright 2013 Computer Action Team, unless otherwise noted.
2020
#
2121
class nrpe (
22-
Array[String] $allowed_hosts = ['127.0.0.1'],
23-
String $server_address = '0.0.0.0',
24-
Integer $command_timeout = 60,
25-
String $config = $nrpe::params::nrpe_config,
26-
String $include_dir = $nrpe::params::nrpe_include_dir,
27-
Variant[String, Array[String]] $package_name = $nrpe::params::nrpe_packages,
28-
Optional[String] $provider = $nrpe::params::nrpe_provider,
29-
Boolean $manage_package = true,
30-
Optional[Boolean] $purge = undef,
31-
Optional[Boolean] $recurse = undef,
32-
String $service_name = $nrpe::params::nrpe_service,
33-
Integer $dont_blame_nrpe = $nrpe::params::dont_blame_nrpe,
34-
String $log_facility = $nrpe::params::log_facility,
35-
Integer $server_port = $nrpe::params::server_port,
36-
Optional[String] $command_prefix = $nrpe::params::command_prefix,
37-
Integer $debug = $nrpe::params::debug,
38-
Integer $connection_timeout = $nrpe::params::connection_timeout,
39-
Optional[Integer]$allow_bash_command_substitution = $nrpe::params::allow_bash_command_substitution,
40-
String $nrpe_user = $nrpe::params::nrpe_user,
41-
String $nrpe_group = $nrpe::params::nrpe_group,
42-
String $nrpe_pid_file = $nrpe::params::nrpe_pid_file,
43-
String $nrpe_ssl_dir = $nrpe::params::nrpe_ssl_dir,
44-
Optional[String] $ssl_cert_file_content = undef,
45-
Optional[String] $ssl_privatekey_file_content = undef,
46-
Optional[String] $ssl_cacert_file_content = undef,
47-
String $ssl_version = $nrpe::params::ssl_version,
48-
Array[String] $ssl_ciphers = $nrpe::params::ssl_ciphers,
49-
Integer $ssl_client_certs = $nrpe::params::ssl_client_certs,
50-
Boolean $ssl_log_startup_params = false,
51-
Boolean $ssl_log_remote_ip = false,
52-
Boolean $ssl_log_protocol_version = false,
53-
Boolean $ssl_log_cipher = false,
54-
Boolean $ssl_log_client_cert = false,
55-
Boolean $ssl_log_client_cert_details = false,
56-
String $command_file_default_mode = '0644',
22+
Array[Stdlib::Host] $allowed_hosts = ['127.0.0.1'],
23+
Stdlib::IP::Address $server_address = '0.0.0.0',
24+
Integer[0] $command_timeout = 60,
25+
Stdlib::Absolutepath $config = $nrpe::params::nrpe_config,
26+
Stdlib::Absolutepath $include_dir = $nrpe::params::nrpe_include_dir,
27+
Variant[String[1], Array[String[1]]] $package_name = $nrpe::params::nrpe_packages,
28+
Optional[String[1]] $provider = $nrpe::params::nrpe_provider,
29+
Boolean $manage_package = true,
30+
Optional[Boolean] $purge = undef,
31+
Optional[Boolean] $recurse = undef,
32+
String[1] $service_name = $nrpe::params::nrpe_service,
33+
Boolean $dont_blame_nrpe = $nrpe::params::dont_blame_nrpe,
34+
Nrpe::Syslogfacility $log_facility = $nrpe::params::log_facility,
35+
Stdlib::Port $server_port = $nrpe::params::server_port,
36+
Optional[Stdlib::Absolutepath] $command_prefix = $nrpe::params::command_prefix,
37+
Boolean $debug = $nrpe::params::debug,
38+
Integer[0] $connection_timeout = $nrpe::params::connection_timeout,
39+
Optional[Boolean] $allow_bash_command_substitution = $nrpe::params::allow_bash_command_substitution,
40+
String[1] $nrpe_user = $nrpe::params::nrpe_user,
41+
String[1] $nrpe_group = $nrpe::params::nrpe_group,
42+
Stdlib::Absolutepath $nrpe_pid_file = $nrpe::params::nrpe_pid_file,
43+
Stdlib::Absolutepath $nrpe_ssl_dir = $nrpe::params::nrpe_ssl_dir,
44+
Optional[String[1]] $ssl_cert_file_content = undef,
45+
Optional[String[1]] $ssl_privatekey_file_content = undef,
46+
Optional[String[1]] $ssl_cacert_file_content = undef,
47+
Nrpe::Sslversion $ssl_version = $nrpe::params::ssl_version,
48+
Array[String[1]] $ssl_ciphers = $nrpe::params::ssl_ciphers,
49+
Enum['no','ask','require'] $ssl_client_certs = $nrpe::params::ssl_client_certs,
50+
Boolean $ssl_log_startup_params = false,
51+
Boolean $ssl_log_remote_ip = false,
52+
Boolean $ssl_log_protocol_version = false,
53+
Boolean $ssl_log_cipher = false,
54+
Boolean $ssl_log_client_cert = false,
55+
Boolean $ssl_log_client_cert_details = false,
56+
Stdlib::Filemode $command_file_default_mode = '0644',
5757
) inherits nrpe::params {
5858

5959
if $manage_package {
@@ -79,6 +79,11 @@
7979
ensure => present,
8080
}
8181

82+
$_allow_bash_command_substitution = $allow_bash_command_substitution ? {
83+
undef => undef,
84+
default => bool2str($allow_bash_command_substitution, '1', '0'),
85+
}
86+
8287
concat::fragment { 'nrpe main config':
8388
target => $config,
8489
content => epp(
@@ -91,39 +96,46 @@
9196
'nrpe_user' => $nrpe_user,
9297
'nrpe_group' => $nrpe_group,
9398
'allowed_hosts' => $allowed_hosts,
94-
'dont_blame_nrpe' => "${dont_blame_nrpe}",
95-
'allow_bash_command_substitution' => $allow_bash_command_substitution,
99+
'dont_blame_nrpe' => bool2str($dont_blame_nrpe, '1', '0'),
100+
'allow_bash_command_substitution' => $_allow_bash_command_substitution,
96101
'libdir' => $nrpe::params::libdir,
97102
'command_prefix' => $command_prefix,
98-
'debug' => "${debug}",
99-
'command_timeout' => $command_timeout + 0,
100-
'connection_timeout' => $connection_timeout + 0,
103+
'debug' => bool2str($debug, '1', '0'),
104+
'command_timeout' => $command_timeout,
105+
'connection_timeout' => $connection_timeout,
101106
}
102107
),
103108
order => '01',
104109
}
105110

106111
if $ssl_cert_file_content {
112+
113+
$_ssl_client_certs = $ssl_client_certs ? {
114+
'ask' => '1',
115+
'require' => '2',
116+
default => '0', # $ssl_client_certs = 'no'
117+
}
118+
107119
concat::fragment { 'nrpe ssl fragment':
108-
target => $config,
109-
content => epp(
110-
'nrpe/nrpe.cfg-ssl.epp',
111-
{
112-
'ssl_version' => $ssl_version,
113-
'ssl_ciphers' => $ssl_ciphers,
114-
'nrpe_ssl_dir' => $nrpe_ssl_dir,
115-
'ssl_client_certs' => "${ssl_client_certs}",
116-
'ssl_logging' => nrpe::ssl_logging(
117-
$ssl_log_startup_params,
118-
$ssl_log_remote_ip,
119-
$ssl_log_protocol_version,
120-
$ssl_log_cipher,
121-
$ssl_log_client_cert,
122-
$ssl_log_client_cert_details
123-
)
124-
}
125-
),
126-
order => '02',
120+
target => $config,
121+
content => epp(
122+
'nrpe/nrpe.cfg-ssl.epp',
123+
{
124+
'ssl_version' => $ssl_version,
125+
'ssl_ciphers' => $ssl_ciphers,
126+
'nrpe_ssl_dir' => $nrpe_ssl_dir,
127+
'ssl_client_certs' => $_ssl_client_certs,
128+
'ssl_logging' => nrpe::ssl_logging(
129+
$ssl_log_startup_params,
130+
$ssl_log_remote_ip,
131+
$ssl_log_protocol_version,
132+
$ssl_log_cipher,
133+
$ssl_log_client_cert,
134+
$ssl_log_client_cert_details
135+
)
136+
}
137+
),
138+
order => '02',
127139
}
128140

129141
file { $nrpe_ssl_dir:

manifests/params.pp

+3-3
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,12 @@
136136
}
137137
}
138138

139-
$dont_blame_nrpe = 0
139+
$dont_blame_nrpe = false
140140
$allow_bash_command_substitution = undef # not in very old NRPE
141141
$log_facility = 'daemon'
142142
$server_port = 5666
143143
$command_prefix = undef
144-
$debug = 0
144+
$debug = false
145145
$connection_timeout = 300
146146

147147
$ssl_version = 'TLSv1.2+'
@@ -153,5 +153,5 @@
153153
'DHE-RSA-AES128-SHA256',
154154
'DHE-RSA-AES256-SHA256',
155155
]
156-
$ssl_client_certs = 1
156+
$ssl_client_certs = 'ask'
157157
}

manifests/plugin.pp

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#
22
define nrpe::plugin (
3-
Enum['present', 'absent'] $ensure = present,
4-
Optional[String] $content = undef,
5-
Optional[String] $source = undef,
6-
String $mode = $nrpe::params::nrpe_plugin_file_mode,
7-
String $libdir = $nrpe::params::libdir,
8-
Variant[String, Array[String]] $package_name = $nrpe::params::nrpe_packages,
9-
String $file_group = $nrpe::params::nrpe_files_group,
3+
Enum['present', 'absent'] $ensure = present,
4+
Optional[String[1]] $content = undef,
5+
Optional[Stdlib::Filesource] $source = undef,
6+
Stdlib::Filemode $mode = $nrpe::params::nrpe_plugin_file_mode,
7+
Stdlib::Absolutepath $libdir = $nrpe::params::libdir,
8+
Variant[String[1], Array[String[1]]] $package_name = $nrpe::params::nrpe_packages,
9+
String[1] $file_group = $nrpe::params::nrpe_files_group,
1010
) {
1111
file { "${libdir}/${title}":
1212
ensure => $ensure,

types/sslversion.pp

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# SSL VERSION
2+
# This can be any of: SSLv2 (only use SSLv2), SSLv2+ (use any version),
3+
# SSLv3 (only use SSLv3), SSLv3+ (use SSLv3 or above), TLSv1 (only use
4+
# TLSv1), TLSv1+ (use TLSv1 or above), TLSv1.1 (only use TLSv1.1),
5+
# TLSv1.1+ (use TLSv1.1 or above), TLSv1.2 (only use TLSv1.2),
6+
# TLSv1.2+ (use TLSv1.2 or above)
7+
8+
type Nrpe::Sslversion = Enum['SSLv2','SSLv2+','SSLv3','SSLv3+','TLSv1','TLSv1+','TLSv1.1','TLSv1.1+','TLSv1.2','TLSv1.2+']

types/syslogfacility.pp

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
type Nrpe::Syslogfacility = Enum[
2+
'user',
3+
'mail',
4+
'daemon',
5+
'auth',
6+
'syslog',
7+
'lpr',
8+
'news',
9+
'uucp',
10+
'cron',
11+
'authpriv',
12+
'ftp',
13+
'ntp',
14+
'security',
15+
'console',
16+
'solaris-cron',
17+
'local0',
18+
'local1',
19+
'local2',
20+
'local3',
21+
'local4',
22+
'local5',
23+
'local6',
24+
'local7'
25+
]

0 commit comments

Comments
 (0)