Concourse CI执行terraform plan时如何正确传入自定义变量?
Concourse CI Terraform变量传递配置错误说明与修正方案
现有配置的2处核心语法错误
- 错误1:
params字段层级配置错误
Concourse任务的环境变量参数params是与image、config平级的字段,你当前将params放在了config.run层级下,Concourse不会将该层级的字段注入为任务运行环境变量,导致变量无法被识别。 - 错误2:Terraform变量传递缺少固定前缀
Terraform默认只会读取前缀为TF_VAR_的环境变量作为部署输入变量,你直接传递variable1、variable2的格式不符合Terraform的变量读取规则。
修正后的任务配置示例
- task: terraform-plan image: terraform-0-13-7 # params放在task的顶级层级,和image、config平级 params: TF_VAR_variable1: "test" TF_VAR_variable2: "test2" config: inputs: - name: terraform-repo outputs: - name: terraform-repo platform: linux run: path: terraform dir: terraform-repo args: - plan # 如果变量是通过tfvars文件传入,也可以在这里加参数指定文件: # - -var-file=./xxx.tfvars
额外流程优化建议(适配你需要的plan/apply/destroy全流程)
- 建议在plan步骤新增
-out=tf.plan参数,将plan结果固化为文件传递给后续apply步骤,避免apply执行时重新计算的结果与plan不一致 - destroy任务可以单独配置为手动触发,避免误操作销毁资源,只需要在get步骤加
trigger: false,并新增手动触发配置即可
内容的提问来源于stack exchange,提问作者Lime
相关产品推荐
相关产品推荐

