我想运行一个管道,其中包含从 POST 请求中的应用程序发送到 ADO 管道的变量。尝试使用运行 API 执行类似于 this 的操作: 但是我不确定如何在管道中引用这些变量。我想在我的管道中使用 terraform 以及其中一些变量。这可能是一些简单的事情,我只是还没有找到,但感谢任何帮助
网上查了一下,有的地方说环境变量?如果是这样的话,将不胜感激如何参考这些内容。
要在 terraform 中引用通过 REST API Runs - Run Pipeline 分配的管道变量,可以参考以下示例。在此示例中,我创建一个新项目并使用变量“projname”定义项目名称。
projname
并在var.projname
中使用main.tf
引用它。variable "projname" {
type = string
}
terraform {
required_providers {
azuredevops = {
source = "microsoft/azuredevops"
version = ">= 0.1.0"
}
}
}
resource "azuredevops_project" "project" {
name = var.projname
visibility = "private"
version_control = "Git"
work_item_template = "Agile"
description = "Created by Terraform"
}
在计划中使用
projname
将 -var "projname=$(projname)"
的值传递给 terraform 脚本并应用命令。
- task: CmdLine@2
displayName: Terraform Plan and Apply
env:
AZDO_PERSONAL_ACCESS_TOKEN: $(System.AccessToken)
AZDO_ORG_SERVICE_URL: $(System.CollectionUri)
inputs:
script: |
terraform plan -input=false -var "projname=$(projname)"
terraform apply -input=false -var "projname=$(projname)" -auto-approve
如果您不对 DevOps 组织进行更改,则无需定义上面所示的
env
变量。
如果您使用 Terraform 任务,您可以在
-var "projname=$(projname)"
中添加 commandOptions
。
- task:TerraformTaskV3@3
displayName: 'Terraform Plan'
inputs:
command: 'plan'
workingDirectory: '$(Build.SourcesDirectory)'
environmentServiceName: '<service_connection_name>'
commandOptions: '-var "projname=$(projname)"'
请求正文:
{
"resources": {
"repositories": {
"self": {
"refName": "refs/heads/main"
}
}
},
"variables": {
"projname": {
"isSecret": false,
"value": "TerraformPro"
}
}
}