STACKITCIN-311 Adjust Grafana TF module to allow Postgres datasources #4

Merged
stanislav.kopp merged 3 commits from STACKITCIN-311-grafana-postgres-ds into main 2025-08-27 07:48:40 +00:00
3 changed files with 16 additions and 17 deletions
Showing only changes of commit 2ffaa5060e - Show all commits

View file

@ -83,17 +83,17 @@ module "datasource" {
datasources = {
Thanos-Common-Infra-PRD = {
type = "prometheus"
url_key = "thanos_coin_prd"
user_key = "thanos_coin_prd"
pass_key = "thanos_coin_prd"
is_default = true
type = "prometheus"
url_key = "thanos_coin_prd"
basic_auth_user_key = "thanos_coin_prd"
pass_key = "thanos_coin_prd"
is_default = true
}
Loki-Common-Infra-PRD = {
type = "loki"
url_key = "loki_coin_prd"
user_key = "loki_coin_prd"
pass_key = "loki_coin_prd"
type = "loki"
url_key = "loki_coin_prd"
basic_auth_user_key = "loki_coin_prd"
pass_key = "loki_coin_prd"
}
}

View file

@ -1,4 +1,4 @@
# Step 1: Create the basic "shell" of each datasource.
# Create the basic "shell" of each datasource.
resource "grafana_data_source" "this" {
for_each = var.datasources
@ -8,7 +8,6 @@ resource "grafana_data_source" "this" {
is_default = coalesce(each.value.is_default, false)
# For HTTP Basic Auth (Loki, Prometheus, etc.)
# FIX: Changed 'user_key' to 'basic_auth_user_key' to match your variables.tf
basic_auth_enabled = each.value.basic_auth_user_key != null
basic_auth_username = each.value.basic_auth_user_key != null ? var.datasource_users[each.value.basic_auth_user_key] : null
@ -16,7 +15,7 @@ resource "grafana_data_source" "this" {
# This sets the username initially.
username = each.value.db_user_key != null ? var.datasource_users[each.value.db_user_key] : null
# CRITICAL FIX: This resource must ignore attributes that are
# This resource must ignore attributes that are
# managed by the other 'config' resources below.
lifecycle {
ignore_changes = [
@ -28,7 +27,7 @@ resource "grafana_data_source" "this" {
}
}
# Step 2: Apply the main json_data for datasources like PostgreSQL.
# Apply the main json_data for datasources like PostgreSQL.
resource "grafana_data_source_config" "json_data_main" {
for_each = {
for k, v in var.datasources : k => v
@ -45,7 +44,7 @@ resource "grafana_data_source_config" "json_data_main" {
}
}
# Step 3: Apply passwords to all datasources that require one.
# Apply passwords to all datasources that require one.
resource "grafana_data_source_config" "passwords" {
for_each = {
for k, v in var.datasources : k => v if v.pass_key != null
@ -67,7 +66,7 @@ resource "grafana_data_source_config" "passwords" {
}
}
# Step 4: Apply Loki-specific 'derivedFields' configuration.
# Apply Loki-specific 'derivedFields' configuration.
resource "grafana_data_source_config" "loki_derived_fields" {
for_each = {
for k, v in var.datasources : k => v if v.type == "loki" && v.derived_fields != null
@ -90,7 +89,7 @@ resource "grafana_data_source_config" "loki_derived_fields" {
}
}
# Step 5: Apply Tempo-specific 'tracesToLogsV2' configuration.
# Apply Tempo-specific 'tracesToLogsV2' configuration.
resource "grafana_data_source_config" "tempo_traces_to_logs" {
for_each = {
for k, v in var.datasources : k => v if v.type == "tempo" && v.traces_to_logs != null

View file

@ -15,7 +15,7 @@ EOT
# Key to look up a basic auth username
basic_auth_user_key = optional(string)
# ADDED BACK: Non-sensitive JSON data for Postgres, etc.
# Non-sensitive JSON data for Postgres, etc.
json_data = optional(map(any))
# Linking Attributes (for Loki/Tempo)