-
-
Notifications
You must be signed in to change notification settings - Fork 241
/
Copy pathpostfix_exporter.pp
133 lines (126 loc) · 6.17 KB
/
postfix_exporter.pp
1
2
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# @summary manages prometheus postfix_exporter
# @example Basic usage
# include prometheus::postfix_exporter
# @see https://github.com/kumina/postfix_exporter
# @param install_method
# Installation method: `url` or `package`. (Note `package` is not available on most OSes.)
# @param download_url
# Complete URL corresponding to the where the release can be downloaded. (This option is only relevant when `install_method` is `url`.)
# @param download_url_base
# Base URL for the binary archive. (This option is only relevant when `install_method` is `url`.)
# @param download_extension
# Extension for the release binary archive. (This option is only relevant when `install_method` is `url`.)
# @param version
# The binary release version. (This option is only relevant when `install_method` is `url`.)
# @param package_ensure
# Used when `install_method` is `package`.
# @param package_name
# Used when `install_method` is `package`.
# @param manage_user
# Whether to create and manage the exporter's user. This can eg. be set to `false` if your package already creates a user for you.
# @param user
# User which runs the service.
# @param manage_group
# Whether to create and manage the exporter's group. This can eg. be set to `false` if your package already creates a group for you.
# @param group
# Group to run the service as.
# @param extra_groups
# Extra groups to add the exporter user to.
# @param manage_service
# Should puppet manage the service?
# @param init_style
# Service startup scripts style. When not set, the correct default for your OS will be used.
# Can also be set to `none` when you don't want the class to create a startup script/unit_file for you.
# Typically this can be used when a package is already providing the file.
# @param service_name
# The name of the service.
# @param service_ensure
# Desired state for the service.
# @param service_enable
# Whether to enable the service from puppet.
# @param extra_options
# Extra options added to the startup command. Override these if you want to monitor a logfile instead of systemd.
# @param restart_on_change
# Should puppet restart the service on configuration change?
# @param export_scrape_job
# Whether to export a `prometheus::scrape_job` to puppetDB for collecting on your prometheus server.
# @param scrape_port
# The port to use in the scrape job. This won't normally need to be changed unless you run the exporter with a non-default port by overriding `extra_options`.
# @param scrape_job_name
# The name of the scrape job. When configuring prometheus with this puppet module, the jobs to be collected are configured with `prometheus::collect_scrape_jobs`.
# @param scrape_job_labels
# Labels to configure on the scrape job. If not set, the `prometheus::daemon` default (`{ 'alias' => $scrape_host }`) will be used.
# @param proxy_server
# Optional proxy server, with port number if needed. ie: https://example.com:8080
# @param proxy_type
# Optional proxy server type (none|http|https|ftp)
class prometheus::postfix_exporter (
# Installation options
Prometheus::Install $install_method = 'url',
Optional[Stdlib::HTTPUrl] $download_url = undef,
Stdlib::HTTPUrl $download_url_base = 'https://github.com/kumina/postfix_exporter/releases',
String $download_extension = '', # lint:ignore:params_empty_string_assignment
String[1] $version = '0.2.0',
Optional[String[1]] $proxy_server = undef,
Optional[Enum['none', 'http', 'https', 'ftp']] $proxy_type = undef,
# Package options (relevant when `install_method == 'package'`)
String[1] $package_ensure = 'installed',
String[1] $package_name = 'postfix_exporter',
# user/group configuration
Boolean $manage_user = true,
String[1] $user = 'postfix-exporter',
Boolean $manage_group = true,
String[1] $group = 'postfix-exporter',
Array[String[1]] $extra_groups = [],
# service related options
Boolean $manage_service = true,
Optional[Prometheus::Initstyle] $init_style = undef,
String[1] $service_name = 'postfix_exporter',
Stdlib::Ensure::Service $service_ensure = 'running',
Boolean $service_enable = true,
# exporter configuration
String $extra_options = '--systemd.enable --systemd.unit=\'postfix.service\' --postfix.logfile_path=\'\'',
Boolean $restart_on_change = true,
# scrape job configuration
Boolean $export_scrape_job = false,
Optional[Stdlib::Host] $scrape_host = undef,
Stdlib::Port $scrape_port = 9154,
String[1] $scrape_job_name = 'postfix',
Optional[Hash] $scrape_job_labels = undef,
) {
include prometheus
$real_download_url = pick($download_url,"${download_url_base}/download/${version}/${package_name}")
$notify_service = $restart_on_change ? {
true => Service[$service_name],
default => undef,
}
prometheus::daemon { $service_name:
install_method => $install_method,
version => $version,
download_extension => $download_extension,
os => $prometheus::os,
arch => $prometheus::real_arch,
real_download_url => $real_download_url,
bin_dir => $prometheus::bin_dir,
notify_service => $notify_service,
package_name => $package_name,
package_ensure => $package_ensure,
manage_user => $manage_user,
user => $user,
extra_groups => $extra_groups,
group => $group,
manage_group => $manage_group,
options => $extra_options,
init_style => $init_style,
service_ensure => $service_ensure,
service_enable => $service_enable,
manage_service => $manage_service,
export_scrape_job => $export_scrape_job,
scrape_host => $scrape_host,
scrape_port => $scrape_port,
scrape_job_name => $scrape_job_name,
scrape_job_labels => $scrape_job_labels,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
}
}