下面是我创建多个 DNS 记录的代码。我只能看到为 DNS 区域 scm.azure-api.net 创建的记录,而看不到为其他 DNS 区域创建的记录。请建议我如何实现这一目标?
resource "azurerm_private_dns_a_record" "apiprivatednszone" {
for_each = var.pvtdnsrecord
name = var.always_same_name ? "azdlgleuw-apim-apimngname-001" : each.value.zone
zone_name = each.value.zone
resource_group_name = azurerm_resource_group.windows-function-rg.name
ttl = 300
records = ["10.0.1.4"]
}
Below is my variable file
variable "always_same_name" {
default = true
}
variable "pvtdnsrecord" {
type = map(any)
default = {
azurerecord = {
name = "apim-test-001",
zone = "azure-api.net"
},
portal = {
name = "apim-test-001",
zone = "portal.azure-api.net"
},
developer = {
name = "apim-test-001",
zone = "developer.azure-api.net"
},
mngmnt = {
name = "apim-test-001",
zone = "management.azure-api.net"
},
scm = {
name = "apim-test-001",
zone = "scm.azure-api.net"
}
}
}
元参数和相应的指定值
for_each = var.pvtdnsrecord
迭代 map
类型的变量并相应地解析值。 boolean
类型变量 always_same_name
被分配了默认值 true
,并且没有证据表明输入覆盖了该值(也没有其他默认值)。因此,三元:
name = var.always_same_name ? "azdlgleuw-apim-apimngname-001" : each.value.zone
始终坚持真理并回报
azdlgleuw-apim-apimngname-001
。由于每个资源的 name
参数是相同的,并且这是针对 DNS A 记录,因此只会编译最终资源。在这种情况下,这将是带有键 scm
的嵌套映射的临时 lambda 变量,因为 Terraform 中的迭代采用 map
类型的词法排序。这将是您确认是您正在观察的结果的区域 scm.azure-api.net
。
快速解决方法是为变量
var.always_same_name
分配值 false
,但您可能还想向 TF 开发人员询问该变量和三元组的预期功能应该是什么。