3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'manifests/poolmon.pp', line 3
class dovecot::poolmon inherits dovecot {
if ($dovecot::poolmon_manage) {
$dirname = "poolmon-${dovecot::poolmon_version}"
$filename = "${dirname}.tar.gz"
$install_path = "${dovecot::poolmon_basepath}/${dirname}"
file { $install_path:
ensure => directory,
mode => '0775',
}
# merge default config with user-defined values
$_archive_params = {
path => "/tmp/${filename}",
source => "https://github.com/brandond/poolmon/archive/${dovecot::poolmon_version}.tar.gz",
extract_path => $dovecot::poolmon_basepath,
creates => "${install_path}/poolmon",
require => File[$install_path],
}
$archive_params = deep_merge($_archive_params, $dovecot::poolmon_archive_params)
# download poolmon
archive { $filename:
* => $archive_params,
}
file { $dovecot::poolmon_exec:
ensure => link,
target => "${install_path}/poolmon",
require => Archive[$filename],
}
# optional file containing credentials for dovecot director
if ($dovecot::poolmon_config['username'] =~ String) and
($dovecot::poolmon_config['password'] =~ String) {
$poolmon_credfile = "${dovecot::poolmon_config_file}.cred"
$_template = '<%= $username %><%= "\n" %><%= $password %>'
file { $poolmon_credfile:
mode => '0600',
content => inline_epp($_template, {
username => $dovecot::poolmon_config['username'],
password => $dovecot::poolmon_config['password']
}),
before => [
File[$dovecot::poolmon_config_file],
Service['poolmon'],
],
}
} else {
$poolmon_credfile = undef
}
# create service configuration file
file { $dovecot::poolmon_config_file:
mode => '0600',
content => epp('dovecot/poolmon.config', {
logfile => $dovecot::poolmon_config['logfile'],
lockfile => $dovecot::poolmon_config['lockfile'],
socket => $dovecot::poolmon_config['socket'],
log_debug => $dovecot::poolmon_config['log_debug'],
scan_interval => $dovecot::poolmon_config['scan_interval'],
check_timeout => $dovecot::poolmon_config['check_timeout'],
lmtp_from => $dovecot::poolmon_config['lmtp_from'],
lmtp_to => $dovecot::poolmon_config['lmtp_to'],
username => $dovecot::poolmon_config['username'],
password => $dovecot::poolmon_config['password'],
check_port => $dovecot::poolmon_config['check_port'],
check_ssl => $dovecot::poolmon_config['check_ssl'],
credfile => $poolmon_credfile,
provider => $dovecot::poolmon_service_provider,
enable => $dovecot::poolmon_service_enable,
}),
}
# install service script
file { $dovecot::poolmon_service_file:
mode => $dovecot::poolmon_service_mode,
content => epp("dovecot/poolmon.service.${dovecot::poolmon_service_provider}"),
}
# enable/start service
service { 'poolmon':
ensure => $dovecot::poolmon_service_ensure,
enable => $dovecot::poolmon_service_enable,
subscribe => [
Archive[$filename],
File[$dovecot::poolmon_config_file],
File[$dovecot::poolmon_service_file],
],
}
}
}
|