如何引用ADO REST API传递给Pipeline的变量并用于Terraform?
ADO Pipeline 自定义变量引用与Terraform使用指南
一、通过Runs API传递自定义变量
发送POST请求时,在请求体的templateParameters字段中传入自定义变量即可(API版本适配优先用这个字段),示例请求体结构:
{ "templateParameters": { "app_env": "production", "tf_resource_prefix": "prod-azure-" }, "resources": { "repositories": { "self": { "refName": "refs/heads/main" } } } }
二、在Pipeline YAML中引用变量
1. 基础步骤直接引用
在YAML的任意步骤里,用$(变量名)格式直接调用传递的自定义变量:
steps: - script: echo "当前部署环境:$(app_env)" displayName: 打印部署环境变量
2. 给Terraform传递变量的两种方法
方式一:映射为TF专属环境变量
Terraform会自动识别前缀为TF_VAR_的环境变量,在YAML步骤里直接映射:
steps: - task: TerraformCLI@0 displayName: Terraform 执行Plan env: TF_VAR_tf_resource_prefix: $(tf_resource_prefix) TF_VAR_app_env: $(app_env) inputs: command: plan workingDirectory: '$(System.DefaultWorkingDirectory)/terraform'
方式二:生成terraform.tfvars文件
把ADO变量写入tfvars文件,让Terraform自动加载:
steps: - script: | echo "tf_resource_prefix = \"$(tf_resource_prefix)\"" > terraform.tfvars echo "app_env = \"$(app_env)\"" >> terraform.tfvars displayName: 生成Terraform变量文件 workingDirectory: '$(System.DefaultWorkingDirectory)/terraform' - task: TerraformCLI@0 displayName: Terraform 执行Apply inputs: command: apply workingDirectory: '$(System.DefaultWorkingDirectory)/terraform'
三、关键注意事项
- 如果是Pipeline预先定义的变量,需要在变量设置里勾选「允许在队列时设置」,否则API传递的变量无法覆盖原有值。
- 敏感变量建议在API请求的
parameters字段中以secret类型传递,YAML中引用时会自动隐藏输出内容,避免泄露。
内容的提问来源于stack exchange,提问作者George Hosford
相关产品推荐
相关产品推荐

