Terraform配置Cloud Run Job Secret时遇Unsupported block type错误求助
解决Terraform Cloud Run Job添加Secret时的"value_from"块错误
问题原因
你使用的GoogleCloudPlatform/terraform-google-cloud-run仓库v0.8.0版本的job-exec模块,内部代码对google_cloud_run_v2_job资源的value_from块位置处理有误,或是与当前使用的Terraform Google Provider版本不兼容,导致Terraform无法识别该块的合法位置。
解决步骤
1. 匹配Terraform Google Provider版本
打开模块的versions.tf文件,查看它要求的Google Provider版本范围。v0.8.0的job-exec模块通常要求google provider >= 4.0.0,确保你的根模块provider配置满足这个要求:
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 4.0" # 与模块要求版本匹配 } } }
2. 升级job-exec模块到稳定新版本
v0.8.0属于较旧版本,这类结构错误大概率已在新版本中修复。修改模块引用,使用最新稳定版(可查看仓库标签选择v1.x系列):
module "job" { source = "GoogleCloudPlatform/cloud-run/google//modules/job-exec" version = "~> 1.0" # 替换为最新稳定版 # 其他配置项... }
执行terraform init -upgrade完成模块升级。
3. 校验env_secret_vars配置格式
确保variable.tfvars里的env_secret_vars符合模块要求的结构,应为包含环境变量名、Secret名称、Secret密钥的列表:
env_secret_vars = [ { name = "DB_PASSWORD" secret = "my-db-secret" key = "password" } ]
4. 临时修复模块代码(仅无法升级时使用)
若必须保留v0.8.0版本,手动修正模块的main.tf文件:
找到报错的dynamic "value_from"块,确保它嵌套在env块内部,调整后的代码示例:
dynamic "env" { for_each = var.env_secret_vars content { name = env.value.name value_from { secret_key_ref { secret = env.value.secret key = env.value.key } } } }
修改后执行terraform plan验证问题是否解决。
内容的提问来源于stack exchange,提问作者Gourav
相关产品推荐
相关产品推荐

