terraform中的循环从复杂对象中分配输入值



我在terraform中从循环分配输入值时遇到了一些麻烦。我有一个变量,它有url和nsrecords列表我想用这个变量在托管区域上建立动态NS记录

这个不工作,但我认为它显示了我想要做的:

resource "aws_route53_record" "erp_subdomain_dev_portalns_record" {
allow_overwrite = true
zone_id = aws_route53_zone.primary.zone_id
ttl = 300
type = "NS"
{for subdomain in var.subdomain_list : [  
name = subdomain.url
records = [for nsrecord in subdomain.nsrecords]
}

vars.tf

variable "subdomain_list" {
type = list(object({
url = string
nsrecords = list(string)
}))
description = "List all sub domains for erp.tylerapi.com"
default = [{
url = "test1.com",
nsrecords = ["ns-333.awsdns-26.com",
"ns-4444.awsdns-06.org",
"ns-5555.awsdns-26.co.uk",
"ns-6666.awsdns-62.net"]
},
{
url = "test2.com",
nsrecords = ["ns-5678.awsdns-21.org",
"ns-1234.awsdns-26.co.uk",
"ns-123.awsdns-31.net",
"ns-345.awsdns-42.com"]
}]
}

我能够使这个工作,但我必须调整变量,而不是使用列表(对象)

var.tf

variable "subdomain_list" {
description = "List all sub domains for erp.tylerapi.com"
default = {
"test1.com" = [
{
nsrecords = ["ns-888.awsdns-26.com",
"ns-5678.awsdns-06.org",
"ns-4321.awsdns-26.co.uk",
"ns-1234.awsdns-62.net"]
}
],
"test2.com" = [{
nsrecords = ["ns-1011.awsdns-21.org",
"ns-789.awsdns-26.co.uk",
"ns-456.awsdns-31.net",
"ns-123.awsdns-42.com"]
} ]
}
}

main.tf

locals {
subdomains = flatten([
for key in keys(var.subdomain_list) : [
for nsrecord in var.subdomain_list[key] : {
url = key
nsrecordslist = nsrecord
}
]
] )
}
resource "aws_route53_record" "erp_subdomain_dev_portalns_record" {
count = length(local.subdomains)
allow_overwrite = true
zone_id = aws_route53_zone.primary.zone_id
ttl = 300
type = "NS"
name = local.subdomains[count.index].url
records = local.subdomains[count.index].nsrecordslist["nsrecords"]
}

最新更新