无法通过 terraform 创建多个指向 Azure API 管理的私有 IP 的同名私有 DNS 记录

问题描述 投票:0回答:1

下面是我创建多个 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"
        }
       
      }
    }
azure terraform
1个回答
0
投票

元参数和相应的指定值

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 开发人员询问该变量和三元组的预期功能应该是什么。

© www.soinside.com 2019 - 2024. All rights reserved.