# 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', }, } }