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