Terraform Azure 应用程序网关无法与密钥保管库中的证书关联

Terraform Azure Application Gateway unable to associate with certificate in key vault

我正在尝试将证书安装到应用程序网关中。 根据文档,我在 ssl_certificate 块中使用了 key_vault_secret_id 。 这是代码的一个简化版本(所有代码都只在这个有问题的块中工作,因此这有助于突出问题):

resource "azurerm_application_gateway" "npfs_application_gateway" {
  name                = local.appgateway_name
  resource_group_name = data.azurerm_resource_group.rg_core.name
  location            = data.azurerm_resource_group.rg_core.location
  ### This is a standard V2
  sku {
    name     = var.gw_sku["name"]
    tier     = var.gw_sku["tier"]
    capacity = var.gw_sku["capacity"]
  }


  ssl_certificate {
    name                = var.pfx_certificate_name
    key_vault_secret_id = "[REDACTED]"

    password            = data.azurerm_key_vault_secret.cert-password.value
  }

  }
}

当我运行将其作为 terraform 计划时,出现以下错误:

The argument "data" is required, but no definition was found.
An argument named "key_vault_secret_id" is not expected here.

这很奇怪,因为文档声明如果设置了 key_vault_secret_id,数据参数是可选的,但它无法识别它。

我正在使用以下版本:

provider.azuread v0.8.0

provider.azurerm v1.44.0

provider.null v2.1.2

provider.random v2.2.1

provider.template v2.1.2

有人遇到过这个吗?我的版本有误吗?

我发现当您遇到这些类型的问题时,最好查看源代码。

根据:https://github.com/terraform-providers/terraform-provider-azurerm/blob/master/azurerm/internal/services/network/application_gateway_resource.go

您只能在 'ssl_certificate' 块中包含 'key_vault_secret_id',这就是您所拥有的。但请注意,这是提供程序的最新版本,版本 2。您使用的是 1.44.0,因此我们需要查看该来源...

https://github.com/terraform-providers/terraform-provider-azurerm/blob/v1.44.0/azurerm/internal/services/network/resource_arm_application_gateway.go

在此版本中,仅提及的 'key_vault_secret_id' 被注释掉了。

我建议您升级到最新版本的提供程序。

我能够通过升级到最新的 azurerm terraform 提供程序来解决这个问题,但这不是我唯一需要做的事情。另外这样做:

  • 转到您正在使用的订阅,转到资源提供者。
  • 查看您是否有状态为“未注册”的提供商“Microsoft.DataProtection”。
  • 注册它。

似乎新的 Terraform 代码正在利用 Azure 中的这个附加提供程序。