当我想把一个map列表传递给Terraform变量时(我使用动态块来迭代这个列表),我得到了这个错误:
│ for_each中不能使用字符串值,需要可迭代集合。
我在Azure Devops中的变量组中的Map列表:
{ "host" = "mysite1.com", "name" = "healthprobe1", "path" = "/healthcheck1" },
{ "host" = "mysite2.com", "name" = "healthprobe2", "path" = "/healthcheck2" },
{ "host" = "mysite2.com", "name" = "healthprobe3", "path" = "/healthcheck3" }
变量组中的变量:
我的Terraform配置,它迭代了一系列Map:
The variable:
variable "PROBES" {
default = [{}]
}
动态块:
dynamic "probe" {
for_each = var.PROBES
content {
host = probe.value.host
interval = 30
minimum_servers = 0
name = probe.value.name
path = probe.value.path
pick_host_name_from_backend_http_settings = false
protocol = local.protocol
timeout = 30
unhealthy_threshold = 3
match {
status_code = ["200-399"]
}
}
}
1条答案
按热度按时间cs7cruho1#
其中一个选项(但需要测试)是将
PROBES
变量定义为字符串,并将dynamic
块中的到
将字符串输入变量显式转换为结构化对象
参考:
EDIT错误地引用了
jsonencode
函数,而这应该是指**jsondecode
**功能