2025-10-02 00:19:01 +02:00
|
|
|
locals {
|
|
|
|
|
app_version = var.tag
|
|
|
|
|
monitoring_folder = "${var.persistent_folder}/grafana"
|
2026-05-22 23:41:26 +02:00
|
|
|
|
2026-05-30 23:24:44 +02:00
|
|
|
dashboard_resource_names = {
|
|
|
|
|
for folder_name in keys(var.dashboard_folder) :
|
|
|
|
|
folder_name => "${substr(replace(lower(folder_name), "/[^a-z0-9-]/", "-"), 0, 40)}-${substr(md5(folder_name), 0, 8)}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dashboard_mount_paths = {
|
|
|
|
|
for folder_name in keys(var.dashboard_folder) :
|
|
|
|
|
folder_name => "/var/lib/grafana/dashboards/${local.dashboard_resource_names[folder_name]}"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Load datasource YAMLs from app root if datasource_folder is provided
|
|
|
|
|
datasource_files = {
|
|
|
|
|
for f in fileset(var.datasource_folder, "*.{yml,yaml}") : f => file("${var.datasource_folder}/${f}")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Load dashboard JSONs from app root folders grouped by Grafana category name
|
|
|
|
|
dashboard_files_by_category = {
|
|
|
|
|
for folder_name, folder_path in var.dashboard_folder :
|
|
|
|
|
folder_name => {
|
|
|
|
|
for f in fileset(folder_path, "*.json") : f => file("${folder_path}/${f}")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
grafana_dashboard_provider = yamlencode({
|
|
|
|
|
apiVersion = 1
|
|
|
|
|
providers = [
|
|
|
|
|
for folder_name in keys(var.dashboard_folder) : {
|
|
|
|
|
name = "local-${local.dashboard_resource_names[folder_name]}"
|
|
|
|
|
orgId = 1
|
|
|
|
|
folder = folder_name
|
|
|
|
|
type = "file"
|
|
|
|
|
disableDeletion = false
|
|
|
|
|
updateIntervalSeconds = 30
|
|
|
|
|
allowUiUpdates = true
|
|
|
|
|
options = {
|
|
|
|
|
path = local.dashboard_mount_paths[folder_name]
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
checksum_datasources = md5(join("", values(local.datasource_files)))
|
|
|
|
|
checksum_dashboards = md5("${local.grafana_dashboard_provider}${jsonencode(local.dashboard_files_by_category)}")
|
2025-10-02 00:19:01 +02:00
|
|
|
}
|