From cac298d490553f61d21f9dd26139858ebd3a2592 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Fri, 10 Feb 2023 19:30:56 +0200 Subject: [PATCH] add code --- manifests/init.pp | 69 +++++++++++++++++++++++++++++++++++++++ templates/grafana.ini.erb | 10 ++++++ 2 files changed, 79 insertions(+) create mode 100644 manifests/init.pp create mode 100644 templates/grafana.ini.erb diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..38e0d3d --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,69 @@ +# Class Grafana +class grafana ( + $container_name = 'grafana', + $container_image_name = 'grafana/grafana-oss', + $container_image_version = 'latest', + $container_mount_data_folder = true, + $container_data_folder = '/var/lib/grafana', + $container_config_folder = '/etc/grafana', + $container_logs_folder = '/var/log/grafana', + $container_volume_name = 'grafana-storage', + $container_port = '3000', + $configuration = {}, # Refer to https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/ +) { + if (!$container_mount_data_folder) { + podman::volume{$container_volume_name:} + $flags = { + publish => [ + "${container_port}:3000", + ], + volume => [ + "${container_volume_name}:/var/lib/grafana", + ], + } + } else { + file {$container_data_folder: + ensure => directory, + } + file {$container_logs_folder: + ensure => directory, + } + file {$container_config_folder: + ensure => directory, + } + $flags = { + publish => [ + "${container_port}:3000", + ], + volume => [ + "${container_data_folder}:/var/lib/grafana", + "${container_config_folder}:/etc/grafana", + "${container_logs_folder}:/var/log/grafana", + ], + } + file { "${container_config_folder}/grafana.ini": + ensure => present, + content => template('grafana/grafana.ini.erb'), + } + } + $env = [ + "GF_PATHS_CONFIG=${container_config_folder}/grafana.ini", + "GF_PATHS_DATA=${$container_data_folder}", + 'GF_PATHS_HOME=/usr/share/grafana', + "GF_PATHS_LOGS=${container_logs_folder}", + "GF_PATHS_PLUGINS=${container_data_folder}/plugins", + "GF_PATHS_PROVISIONING=${container_config_folder}/provisioning", + 'GF_LOG_MODE=console file', + ] + podman::image { $container_name: + image => $container_image_name, + exec_env => $env, + } + podman::container { $container_name: + image => "local/${container_name}", + flags => $flags, + service_flags => { + timeout => '180' + }, + } +} diff --git a/templates/grafana.ini.erb b/templates/grafana.ini.erb new file mode 100644 index 0000000..c280de7 --- /dev/null +++ b/templates/grafana.ini.erb @@ -0,0 +1,10 @@ +<% @configuration.each_pair do |section, options| -%> + +[<%= section %>] +<% @options.each_pair do |option, value| -%> +<%= option %> = <%= value %> +<% end -%> + +<% end -%> + +?>