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,数据参数是可选的,但它无法识别它。
我正在使用以下版本:
- 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
有人遇到过这个吗?我的版本有误吗?
我发现当您遇到这些类型的问题时,最好查看源代码。
您只能在 'ssl_certificate' 块中包含 'key_vault_secret_id',这就是您所拥有的。但请注意,这是提供程序的最新版本,版本 2。您使用的是 1.44.0,因此我们需要查看该来源...
在此版本中,仅提及的 'key_vault_secret_id' 被注释掉了。
我建议您升级到最新版本的提供程序。
我能够通过升级到最新的 azurerm terraform 提供程序来解决这个问题,但这不是我唯一需要做的事情。另外这样做:
- 转到您正在使用的订阅,转到资源提供者。
- 查看您是否有状态为“未注册”的提供商“Microsoft.DataProtection”。
- 注册它。
似乎新的 Terraform 代码正在利用 Azure 中的这个附加提供程序。
我正在尝试将证书安装到应用程序网关中。 根据文档,我在 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,数据参数是可选的,但它无法识别它。
我正在使用以下版本:
- 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
有人遇到过这个吗?我的版本有误吗?
我发现当您遇到这些类型的问题时,最好查看源代码。
您只能在 'ssl_certificate' 块中包含 'key_vault_secret_id',这就是您所拥有的。但请注意,这是提供程序的最新版本,版本 2。您使用的是 1.44.0,因此我们需要查看该来源...
在此版本中,仅提及的 'key_vault_secret_id' 被注释掉了。
我建议您升级到最新版本的提供程序。
我能够通过升级到最新的 azurerm terraform 提供程序来解决这个问题,但这不是我唯一需要做的事情。另外这样做:
- 转到您正在使用的订阅,转到资源提供者。
- 查看您是否有状态为“未注册”的提供商“Microsoft.DataProtection”。
- 注册它。
似乎新的 Terraform 代码正在利用 Azure 中的这个附加提供程序。