【问题标题】:Terraform Azure Application Gateway unable to associate with certificate in key vaultTerraform Azure 应用程序网关无法与密钥保管库中的证书关联
【发布时间】:2020-06-12 11:42:55
【问题描述】:

我正在尝试将证书安装到应用程序网关中。 按照文档,我在 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,则 data 参数是可选的,但它无法识别它。

我正在使用以下版本:

  • Terraform v0.12.26

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

以前有人遇到过这个吗?我的一个版本错了吗?

【问题讨论】:

    标签: azure terraform azure-application-gateway


    【解决方案1】:

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

    根据: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”被注释掉了。

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

    【讨论】:

    • 谢谢。我会记住这一点的。以前我在运行第 2 版提供程序时遇到错误,但我会再试一次。
    【解决方案2】:

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

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

    似乎新的 terraform 代码正在利用 Azure 中的这个额外提供程序。

    【讨论】:

    猜你喜欢
    • 2020-10-19
    • 2021-11-03
    • 1970-01-01
    • 2023-03-21
    • 2011-10-08
    • 2020-04-04
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多