puppet-grafana/manifests/init.pp

93 lines
2.7 KiB
ObjectPascal
Raw Normal View History

2023-02-10 18:30:56 +01:00
# Class Grafana
class grafana (
2023-02-10 18:36:30 +01:00
$admin_password,
2023-03-11 21:00:50 +01:00
$ldap_config_file,
2023-02-12 10:03:10 +01:00
$system_user = 'grafana',
2023-02-10 18:30:56 +01:00
$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/
2023-03-11 21:00:50 +01:00
$ldap_config = {},
2023-02-10 18:30:56 +01:00
) {
2023-02-10 18:47:33 +01:00
$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',
2023-02-12 09:25:24 +01:00
"GF_SECURITY_ADMIN_PASSWORD=${admin_password}",
2023-02-10 18:47:33 +01:00
]
2023-02-10 18:30:56 +01:00
if (!$container_mount_data_folder) {
2023-02-12 09:03:54 +01:00
podman::volume { $container_volume_name: }
2023-02-10 18:30:56 +01:00
$flags = {
2023-02-12 09:03:54 +01:00
publish => [
"${container_port}:3000",
],
2023-02-17 12:33:41 +01:00
#sysctl => 'net.ipv6.conf.all.disable_ipv6=1',
network => 'host',
2023-02-12 09:03:54 +01:00
volume => [
"${container_volume_name}:/var/lib/grafana",
],
env => $env,
}
2023-02-10 18:30:56 +01:00
} else {
2023-02-12 10:03:10 +01:00
user { $system_user:
2023-02-10 18:59:27 +01:00
uid => 472,
}
2023-02-12 09:03:54 +01:00
file { $container_data_folder:
2023-02-10 18:30:56 +01:00
ensure => directory,
2023-02-12 10:03:10 +01:00
owner => $system_user,
2023-02-10 18:57:52 +01:00
}
2023-02-12 09:03:54 +01:00
file { "${container_data_folder}/plugins":
2023-02-10 18:57:52 +01:00
ensure => directory,
2023-02-12 10:03:10 +01:00
owner => $system_user,
2023-02-10 18:57:52 +01:00
require => File[$container_data_folder],
2023-02-10 18:30:56 +01:00
}
2023-02-12 09:03:54 +01:00
file { $container_logs_folder:
2023-02-10 18:30:56 +01:00
ensure => directory,
2023-02-12 10:03:10 +01:00
owner => $system_user,
2023-02-10 18:30:56 +01:00
}
2023-02-12 09:03:54 +01:00
file { $container_config_folder:
2023-02-10 18:30:56 +01:00
ensure => directory,
2023-02-12 10:03:10 +01:00
owner => $system_user,
2023-02-10 18:30:56 +01:00
}
$flags = {
2023-02-12 09:03:54 +01:00
#network => 'grafana',
publish => [
"${container_port}:3000",
],
2023-02-17 12:33:41 +01:00
#sysctl => 'net.ipv6.conf.all.disable_ipv6=1',
network => 'host',
2023-02-12 09:03:54 +01:00
volume => [
"${container_data_folder}:/var/lib/grafana",
"${container_config_folder}:/etc/grafana",
"${container_logs_folder}:/var/log/grafana",
],
env => $env,
}
2023-03-11 21:38:42 +01:00
$defaults = { 'path' => "${container_config_folder}/grafana.ini" }
inifile::create_ini_settings($configuration, $defaults),
# file { "${container_config_folder}/grafana.ini":
# # content => template('grafana/grafana.ini.erb'),
# }
2023-02-10 18:30:56 +01:00
}
podman::container { $container_name:
2023-02-10 18:47:33 +01:00
image => $container_image_name,
2023-02-10 18:30:56 +01:00
flags => $flags,
service_flags => {
2023-02-12 09:03:54 +01:00
timeout => '180',
},
2023-02-10 18:30:56 +01:00
}
2023-03-11 21:00:50 +01:00
file { $ldap_config_file:
content => to_toml($ldap_config),
}
2023-02-10 18:30:56 +01:00
}