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
134
135
136
137
138
139
|
# File 'manifests/jmx_exporter.pp', line 48
class prometheus::jmx_exporter (
String[1] $version,
Stdlib::Absolutepath $config_file_location = '/etc/jmx-exporter.yaml',
String[1] $service_name = 'jmx_exporter',
String[1] $user = 'jmx_exporter',
String[1] $group = 'jmx-exporter',
Array[String[1]] $extra_groups = [],
Stdlib::Absolutepath $java_bin_path = '/usr/bin/java',
Hash $configuration = {},
Enum['javaagent', 'httpserver'] $deployment = 'httpserver',
String[1] $os = downcase($facts['kernel']),
String[1] $arch = $prometheus::real_arch,
Stdlib::Absolutepath $bin_dir = $prometheus::bin_dir,
String[1] $config_mode = $prometheus::config_mode,
Boolean $restart_on_change = true,
Boolean $manage_user = true,
Boolean $manage_group = true,
Boolean $manage_service = true,
Optional[Stdlib::Port::Unprivileged] $port = undef,
Optional[Prometheus::Uri] $download_url = undef,
Optional[String[1]] $proxy_server = undef,
Optional[Enum['none', 'http', 'https', 'ftp']] $proxy_type = undef,
Optional[String] $java_options = undef,
) inherits prometheus {
if $deployment == 'httpserver' and $port == undef {
fail('Port is required for httpserver deployment')
}
$base_url = 'https://repo1.maven.org/maven2/io/prometheus/jmx'
$real_download_url = $download_url ? {
undef => "${base_url}/jmx_prometheus_${deployment}/${version}/jmx_prometheus_${deployment}-${version}.jar",
default => $download_url
}
$_manage_service = $deployment ? {
'javaagent' => false,
default => $manage_service
}
$notify_service = ($restart_on_change and $_manage_service) ? {
true => Service[$service_name],
default => undef,
}
file { $config_file_location:
ensure => file,
owner => 'root',
group => $group,
mode => $config_mode,
content => template('prometheus/jmx_exporter.yaml.erb'),
notify => $notify_service,
}
$_manage_group = $deployment ? {
'javaagent' => false,
default => $manage_group
}
$_manage_user = $deployment ? {
'javaagent' => false,
default => $manage_user
}
$_java_options = $java_options ? {
undef => '',
default => "${java_options} "
}
$_name = 'jmx_exporter'
prometheus::daemon { $_name:
notify_service => $notify_service,
install_method => 'url',
version => $version,
download_extension => '',
real_download_url => $real_download_url,
proxy_server => $proxy_server,
proxy_type => $proxy_type,
manage_group => $_manage_group,
manage_service => $_manage_service,
manage_user => $_manage_user,
extra_groups => $extra_groups,
user => $user,
group => $group,
manage_bin_link => false,
bin_dir => dirname($java_bin_path),
bin_name => basename($java_bin_path),
options => "${_java_options}-jar /opt/${_name}-${version}.${os}-${arch}/${_name} ${port} ${config_file_location}",
os => $os,
arch => $arch,
}
}
|