I need to create a datadog synthetics monitors with the resource datadog_synthetics_test
I need to monitor multiples cluster, with multiple point of view :
# Clusters
variable "datadog_gke_clusters" {
default = [
# NPRD
{
name = "cluster01"
environment = "nprd"
url = {
private = "https://private.domain-priv.com"
public = "https://public.domain.com"
}
},
# PROD
{
name = "cluster02"
environment = "nprd"
url = {
private = "https://private.domain-priv.com"
public = "https://public.domain.com"
}
}
]
}
# Point of views
variable "gke_slo" {
description = "Response time threshold in ms to respond to a request."
default = [
{
zone = private
monitor_threshold = 50
},
{
zone = public
monitor_threshold = 100
},
]
}
for_each
need a map or a list of strings
resource "datadog_synthetics_test" "gke-monitoring" {
for_each = ... # cartesian product of lists
type = "api"
subtype = "http"
....
}
There is a function [setproduct(sets...)][1]
which produce a list which combine values of each list, but not a map.
I would need to produce a map which look like this :
{
"cluster01-private" = {
name = "cluster01"
environment = "nprd"
url = {
private = "https://private.cluster01.domain-priv.com"
public = "https://public.cluster01.domain.com"
}
zone = private
monitor_threshold = 50
},
"cluster01-public" = {
name = "cluster01"
environment = "nprd"
url = {
private = "https://private.cluster01.domain-priv.com"
public = "https://public.cluster01.domain.com"
}
zone = public
monitor_threshold = 100
},
# PROD
.... etc
}
How could I do that ?