puppet-grafana/manifests/init.pp
2023-02-10 19:38:54 +02:00

71 lines
2.2 KiB
Puppet

# Class Grafana
class grafana (
$admin_password,
$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',
"GF_SECURITY_ADMIN_USER=${admin_password}",
]
podman::image { $container_name:
image => $container_image_name,
exec_env => $env,
}
podman::container { $container_name:
image => $container_name,
flags => $flags,
service_flags => {
timeout => '180'
},
}
}