puppet-prometheus/manifests/init.pp
2023-02-12 11:11:33 +02:00

73 lines
2 KiB
Puppet

# Class Prometheus
class prometheus (
$system_user = 'prometheus',
$container_name = 'prometheeus',
$container_image_name = 'prom/prometheus',
$container_image_version = 'latest',
$container_mount_data_folder = true,
$container_data_folder = '/var/lib/prometheus',
$container_config_folder = '/etc/prometheus',
$container_logs_folder = '/var/log/prometheus',
$container_volume_name = 'prometheus-storage',
$container_port = '9090',
$configuration = {}, # Refer to https://prometheus.io/docs/prometheus/latest/configuration/configuration/
) {
$env = [
]
if (!$container_mount_data_folder) {
podman::volume { $container_volume_name: }
$flags = {
publish => [
"${container_port}:9090",
],
sysctl => 'net.ipv6.conf.all.disable_ipv6=1',
volume => [
"${container_volume_name}:/var/lib/prometheus",
],
env => $env,
}
} else {
user { $system_user:
uid => 473,
}
file { $container_data_folder:
ensure => directory,
owner => $system_user,
}
file { "${container_data_folder}/plugins":
ensure => directory,
owner => $system_user,
require => File[$container_data_folder],
}
file { $container_logs_folder:
ensure => directory,
owner => $system_user,
}
file { $container_config_folder:
ensure => directory,
owner => $system_user,
}
$flags = {
publish => [
"${container_port}:9090",
],
sysctl => 'net.ipv6.conf.all.disable_ipv6=1',
volume => [
"${container_data_folder}:/var/lib/prometheus",
"${container_config_folder}:/etc/prometheus",
"${container_logs_folder}:/var/log/prometheus",
],
env => $env,
}
file { "${container_config_folder}/prometheus.yml":
content => template('prometheus/prometheus.yml.erb'),
}
}
podman::container { $container_name:
image => $container_image_name,
flags => $flags,
service_flags => {
timeout => '180',
},
}
}