如何通过Jenkins字符串参数为Terraform的vars.tfvars或variables.tf赋值
可以通过Jenkins字符串参数为vars.tfvars设置值,以下是两种常用实现方式
方式一:直接修改vars.tfvars文件内容
- 在Jenkins任务中添加字符串参数,比如命名为
TF_VAR_instance_name,可设置默认值或留空。 - 在Groovy脚本化流水线中,用shell命令修改vars.tfvars里的对应变量:
stage('Update tfvars') { steps { sh ''' # 替换vars.tfvars中已存在的instance_name值 sed -i "s/^instance_name = .*/instance_name = \\\"${TF_VAR_instance_name}\\\"/" vars.tfvars # 若变量不存在则追加到文件末尾 grep -q "^instance_name = " vars.tfvars || echo "instance_name = \\\"${TF_VAR_instance_name}\\\"" >> vars.tfvars ''' } }
- 后续执行Terraform命令时正常引用该文件即可:
stage('Terraform Apply') { steps { sh 'terraform apply -var-file=vars.tfvars' } }
方式二:通过Terraform命令行直接传入变量(无需修改tfvars文件)
这种方式更灵活,无需改动vars.tfvars,直接在Terraform命令中覆盖变量值:
- 在Jenkins中添加字符串参数,比如
TF_VAR_instance_type。 - 在流水线的Terraform执行步骤中传入参数:
stage('Terraform Apply') { steps { sh 'terraform apply -var-file=vars.tfvars -var "instance_type=${TF_VAR_instance_type}"' } }
注意:variables.tf中必须提前定义对应的变量(比如
variable "instance_type" { type = string }),否则Terraform会报错。
内容的提问来源于stack exchange,提问作者Anushka Fernando
相关产品推荐
相关产品推荐

