azure - 如何使用 terraform 将多个 secret 添加到 azure key Vault

标签 azure azure-keyvault

我见过向 azure key Vault 添加一个 secret (或) key 的示例。但我现在需要使用 terraform 将多个 secret 添加到 azure key Vault。

我怎样才能实现这一目标?有人可以建议吗?

谢谢。

我尝试为每个 secret 添加资源。添加了多个资源,如下所示。但这没有用。

module "keyvault_secret" {

  source = "../../modules/keyvault_secret"

  count               = length(var.secrets)
  keyVaultSecretName  = keys(var.secrets)[count.index]
  keyVaultSecretValue = values(var.secrets)[count.index]
  keyVaultId          = data.azurerm_key_vault.key_vault.id
}

variables: 
variable "secrets" {
  type = map(string)
}
 
variables.tfvars:

secrets  = $(secrets)

in YAML pipeline:

displayName: DEV
    variables: 
      - group: 'Environment - Dev' 
      - name: secrets
        value:  '{"testAPIKey1" = $(testAPIKey1) , "testAPIKey2" = $(testAPIKey2) }' 

我已经在上面的变量组 - 环境 - 开发中定义了这些关键值

这就是错误抛出的内容

需要一个右括号来终止表达式。 ##[错误]Terraform 命令“计划”失败,退出代码“1”。:括号不平衡 ##[错误] 错误:括号不平衡

最佳答案

您需要循环运行它。 有关 Terraform 循环(针对每个循环或计数)的更多信息,请参阅此链接:
https://www.cloudbolt.io/terraform-best-practices/terraform-for-loops/

未经测试,但类似这样:

#Reference AKV in data block
data "azurerm_key_vault" "kvexample" {
  name = "mykeyvault"
  resource_group_name = "some-resource-group"
}

variable "secret_maps" {
    type = map(string)
    default = {
        "name1"= "value1"
        "name2" = "value2"
        "name3" = "value3"
    }
}

# Count loop
resource "azurerm_key_vault_secret" "kvsecrettest" {
  count = length(var.secret_maps)
  name         = keys(var.secret_maps)[count.index]
  value        = values(var.secret_maps)[count.index]
  key_vault_id = azurerm_key_vault.kvexample.id
}

#----------------- Or use For Each instead of Count
# For Each loop
resource "azurerm_key_vault_secret" "kvsecrettest" {
  for_each = var.secret_maps
  name          = each.key
  value         = each.value
  key_vault_id  = azurerm_key_vault.kvexample.id
}

关于azure - 如何使用 terraform 将多个 secret 添加到 azure key Vault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75301131/

相关文章:

asp.net-mvc - 将 ASP.NET 应用程序部署到 Azure Web 应用程序时出现 HTTP 500.79 错误/System.UriFormatException

azure - 如何在 Azure 逻辑应用程序中调用我自己的 API(类似于 Office365 审批连接器)进行审批步骤?

azure - 适用于 Azure AD 联合域的 PowerShell cmdlet(无 ADFS)

c# - Web API 与 Azure Key Vault 的集成测试

azure - Azure Key Vault 续订证书时,Azure 应用服务是否会自动重新启动?

java - EAR 类加载器看不到位于 jar 中的 ApplicationInsights.xml

azure - 如何在azure移动服务运行时上使用最新版本的nodejs

UWP/WinUI 桌面应用访问 Azure Key Vault secret

各种订阅中的服务主体可以访问 Azure Keyvault

azure - 有没有办法使用 azure keyvault 加密超过 255 个字符的字符串