2026-03-25 06:41:19 +03:00
|
|
|
locals {
|
|
|
|
|
|
|
|
|
|
# Определяем HTTP заголовки на основе значения disable_provenance
|
|
|
|
|
grafana_headers = {
|
|
|
|
|
"X-Disable-Provenance" = var.disable_provenance ? "true" : "false"
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-01 08:36:20 +03:00
|
|
|
# IRM: читаем конфигурацию из irm/escalation.yaml
|
|
|
|
|
# Метки вида "vault:key_name" заменяются значениями из Vault (secret_ext)
|
|
|
|
|
_irm_raw = yamldecode(file("${path.module}/irm/escalation.yaml"))
|
|
|
|
|
_irm_ext = data.vault_kv_secret_v2.secret_ext.data
|
|
|
|
|
|
2026-04-01 08:21:03 +03:00
|
|
|
irm_escalation_chains = [
|
2026-04-01 08:36:20 +03:00
|
|
|
for chain in local._irm_raw.chains : {
|
|
|
|
|
name = chain.name
|
|
|
|
|
team_id = try(chain.team_id, null)
|
2026-04-01 08:21:03 +03:00
|
|
|
steps = [
|
2026-04-01 08:36:20 +03:00
|
|
|
for step in chain.steps : merge(step, {
|
|
|
|
|
persons_to_notify = try([
|
|
|
|
|
for p in step.persons_to_notify :
|
|
|
|
|
startswith(p, "vault:") ? local._irm_ext[trimprefix(p, "vault:")] : p
|
|
|
|
|
], null)
|
|
|
|
|
persons_to_notify_next_each_time = try([
|
|
|
|
|
for p in step.persons_to_notify_next_each_time :
|
|
|
|
|
startswith(p, "vault:") ? local._irm_ext[trimprefix(p, "vault:")] : p
|
|
|
|
|
], null)
|
|
|
|
|
})
|
2026-04-01 08:21:03 +03:00
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
2026-03-25 07:31:02 +03:00
|
|
|
# Contact points configuration
|
|
|
|
|
contact_points = [
|
|
|
|
|
{
|
|
|
|
|
name = "default"
|
|
|
|
|
type = "slack"
|
|
|
|
|
is_default = true
|
|
|
|
|
settings = {
|
|
|
|
|
webhook_url = data.vault_kv_secret_v2.secret_ext.data["mmwebhook_default"]
|
2026-03-25 07:57:10 +03:00
|
|
|
template = "../../modules/grafana_contact_points/template/alerts_message_mm.template"
|
2026-03-25 07:31:02 +03:00
|
|
|
}
|
|
|
|
|
},
|
2026-03-25 06:41:19 +03:00
|
|
|
|
2026-03-25 07:31:02 +03:00
|
|
|
{
|
|
|
|
|
name = "infra-alerts-critical"
|
|
|
|
|
type = "slack"
|
|
|
|
|
is_default = false
|
|
|
|
|
settings = {
|
|
|
|
|
webhook_url = data.vault_kv_secret_v2.secret_ext.data["mmwebhook_infra_alerts_critical"]
|
2026-03-25 07:57:10 +03:00
|
|
|
template = "../../modules/grafana_contact_points/template/alerts_message_mm.template"
|
2026-03-25 07:31:02 +03:00
|
|
|
}
|
|
|
|
|
},
|
2026-03-25 06:41:19 +03:00
|
|
|
|
2026-03-25 07:31:02 +03:00
|
|
|
{
|
|
|
|
|
name = "infra-alerts-informational"
|
|
|
|
|
type = "slack"
|
|
|
|
|
is_default = false
|
|
|
|
|
settings = {
|
|
|
|
|
webhook_url = data.vault_kv_secret_v2.secret_ext.data["mmwebhook_infra_alerts_info"]
|
2026-03-25 07:57:10 +03:00
|
|
|
template = "../../modules/grafana_contact_points/template/alerts_message_mm.template"
|
2026-03-25 07:31:02 +03:00
|
|
|
}
|
|
|
|
|
},
|
2026-03-25 06:41:19 +03:00
|
|
|
|
2026-03-25 07:31:02 +03:00
|
|
|
{
|
|
|
|
|
name = "infra-alerts-test"
|
|
|
|
|
type = "slack"
|
|
|
|
|
is_default = false
|
|
|
|
|
settings = {
|
|
|
|
|
webhook_url = data.vault_kv_secret_v2.secret_ext.data["mmwebhook_infra_alerts_test"]
|
2026-03-25 07:57:10 +03:00
|
|
|
template = "../../modules/grafana_contact_points/template/alerts_message_mm.template"
|
2026-03-25 07:31:02 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
2026-03-25 06:41:19 +03:00
|
|
|
}
|