From efc01912b79e432986fafdcd771b683fa73f6dc8 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Sun, 12 Feb 2023 11:03:04 +0200 Subject: [PATCH] Add code --- manifests/init.pp | 74 ++++++++++++++++++++++++++++++++++++ templates/prometheus.yml.erb | 5 +++ 2 files changed, 79 insertions(+) create mode 100644 manifests/init.pp create mode 100644 templates/prometheus.yml.erb diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..f256528 --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,74 @@ +# Class Prometheus +class prometheus ( + $admin_password, + $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', + }, + } +} diff --git a/templates/prometheus.yml.erb b/templates/prometheus.yml.erb new file mode 100644 index 0000000..2fec727 --- /dev/null +++ b/templates/prometheus.yml.erb @@ -0,0 +1,5 @@ +<% require 'yaml' -%> +<%= if @configuration +configuration.to_yaml().gsub(/source_labels: ".+?"/) { |x| x.gsub('"', '') } +end + -%>