You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何引用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:46:08