Terraform部署Azure Key Vault引用时出现资源未找到错误求助
问题分析与解决
错误根源
你遇到的问题核心在于:Terraform的data资源是用来查询已经存在的云资源,而不是当前计划创建的资源。
当你同时定义了azurerm_key_vault.demo资源和对应的data.azurerm_key_vault.demo数据块时,执行terraform plan时,Terraform会先处理所有data块——此时你要创建的Key Vault还不存在,所以会抛出"未找到"的错误。另外错误信息里显示的资源组名称是aazurerm_kubernetes_cluster.demo.k8s-resources,和你代码里用的var.resGroup明显不符,说明你的var.resGroup变量取值可能有误,或者被其他配置覆盖了。
解决方案
1. 直接引用资源属性(推荐)
既然Key Vault是你当前Terraform配置里创建的,完全不需要用data块查询,直接通过资源名称访问它的所有属性即可。
比如你需要用到Key Vault的ID或URI,直接写:
# 示例:输出Key Vault的ID和URI output "key_vault_id" { value = azurerm_key_vault.demo.id } output "key_vault_uri" { value = azurerm_key_vault.demo.vault_uri }
把原来的data块删掉就行,这样Terraform会在创建Key Vault之后自动解析这些属性,不会出现查询不到的问题。
2. 修正资源组变量
检查你的var.resGroup变量值,确保它和创建Key Vault时使用的资源组一致。错误里显示的资源组名称看起来像是引用了K8s集群的资源属性,可能是你不小心把变量值设成了azurerm_kubernetes_cluster.demo.k8s-resources,需要调整为正确的资源组名称。
内容的提问来源于stack exchange,提问作者davetayl
相关产品推荐
相关产品推荐

