Google Cloud Terraform使用变量报错,提示需定义variable块
解决Terraform变量未定义的报错问题
这个报错逻辑其实很直白——你在data块里用了var.network,但Terraform完全不知道这个变量的来头!因为Terraform有个硬性要求:所有要用到的变量,必须先通过variable块提前声明,不然它没法识别变量的类型、描述这些关键信息,自然会报错说找不到变量。
解决起来超简单,只需要两步调整:
- 添加变量声明块
在你的setup.tf文件里,补上一段variable定义,明确告诉Terraformnetwork这个变量的存在:
variable "network" { description = "要引用的Google Cloud VPC网络名称" type = string # 要是需要默认值,可以加一行default = "default-network",这样不指定变量也能正常运行 }
- 简化变量引用(可选但推荐)
Terraform 0.12及以上版本已经支持直接用var.network替代老派的${var.network}写法,所以你的data块可以改成更清爽的形式:
data "google_compute_network" "selected" { name = var.network }
现在再执行terraform apply -var 'network=net1',Terraform就能准确识别network变量了,报错也就彻底消失啦。
内容的提问来源于stack exchange,提问作者DenCowboy
相关产品推荐
相关产品推荐

