You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform数据源中传入指定值而非遍历集合?

解决Terraform中直接指定Azure Key Vault Secret名称而非遍历集合的问题

情况一:仅需检查单个固定名称的Secret

如果你的需求是只验证某一个特定名称的Secret是否存在,不需要和每个用户绑定,直接修改数据源配置即可:

data "azurerm_key_vault_secret" "secret_check" {
  name         = "PM-your-target-secret" # 替换成你要检查的具体Secret名称
  key_vault_id = module.variables.keyVault-id
}

然后调整snowflake_user里的密码引用逻辑,因为数据源不再是集合类型,直接用data.azurerm_key_vault_secret.secret_check.value即可:

resource "snowflake_user" "userSVC_db" {
  for_each             = var.user_collection
  name                 = each.key
  ...
  password = (
    each.value.password_overwrite == false ? random_password.password[index(keys(var.user_collection), each.key)].result :
    each.value.password_overwrite == true ? random_password.password-overwrite.result :
    each.value.password_overwrite == null ? data.azurerm_key_vault_secret.secret_check.value : null
  )
}

情况二:为部分用户单独绑定Secret(不遍历全集合)

如果需要给特定用户对应各自的Secret,但不想遍历整个var.user_collection集合,可以先筛选出需要从Key Vault取密码的用户子集:

locals {
  # 只保留password_overwrite为null的用户,也就是需要从Key Vault取密码的用户
  secret_users = {
    for user_key, user_attr in var.user_collection : user_key => user_attr
    if user_attr.password_overwrite == null
  }
}

接着修改数据源,只遍历这个筛选后的子集:

data "azurerm_key_vault_secret" "secret_check" {
  for_each     = local.secret_users
  name         = "PM-${replace(each.value.name, "_", "-")}"
  key_vault_id = module.variables.keyVault-id
}

最后在snowflake_user里引用时,直接用当前用户的key去访问数据源即可(因为只有符合条件的用户才在secret_users里,不会出现键不存在的问题):

resource "snowflake_user" "userSVC_db" {
  for_each             = var.user_collection
  name                 = each.key
  ...
  password = (
    each.value.password_overwrite == false ? random_password.password[index(keys(var.user_collection), each.key)].result :
    each.value.password_overwrite == true ? random_password.password-overwrite.result :
    each.value.password_overwrite == null ? data.azurerm_key_vault_secret.secret_check[each.key].value : null
  )
}

内容的提问来源于stack exchange,提问作者Tomas Gryzbon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:22:46