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

Terraform新增资源时如何引用已有KeyVault资源ID写入密钥

问题解答

关于KeyVault引用报错的判断澄清

你的判断不成立。只要你当前Terraform栈的状态文件中已经存在azurerm_key_vault.shared_kv的资源记录(即该KeyVault是此前通过这套栈执行创建的),直接引用azurerm_key_vault.shared_kv.id不会触发报错,也完全不需要销毁重建现有KeyVault。
Terraform执行时只会对比配置与状态文件的差异,你新增MySQL Server和密钥对的操作属于增量变更,不会改动已有的KeyVault资源,只会将新生成的密码写入已有KeyVault。
如果该KeyVault并非当前栈管理、不在当前状态文件中,也不需要硬编码资源ID,通过数据源读取即可:

data "azurerm_key_vault" "shared_kv" {
  name                = "KeyVault实际名称"
  resource_group_name = "KeyVault所属资源组名称"
}

resource "azurerm_key_vault_secret" "sqlpassword" {
  name         = "flagr-mysql-password"
  value        = random_password.sqlpassword.result
  key_vault_id = data.azurerm_key_vault.shared_kv.id
}

关于硬编码KeyVault ID的风险说明

如果你直接替换为固定的KeyVault资源ID,后续使用这套栈创建新环境时,只要未修改这个硬编码值,必然会将新环境的MySQL密码写入旧KeyVault,会引发配置混淆、权限泄露等风险,不建议使用硬编码方案。
如果需要适配多环境部署,可将KeyVault的名称、所属资源组定义为Terraform变量,不同环境传入对应参数即可,完全避免环境串扰问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:54:03