如何使用 terraform 输出作为 Azure DevOps 管道中的变量

Taj*_* Ju 4 azure azure-devops azure-pipelines terraform-provider-azure azure-databricks

我正在尝试将使用 Azure DevOps 的 terraform 部署生成的 databricks 工作区名称作为变量传递到另一个步骤,但不知道该怎么做。

所以我在我的output.tf中定义了输出

output "workspace_name" {
  value = azurerm_databricks_workspace.databricks.name
}
Run Code Online (Sandbox Code Playgroud)

我可以看到输出:

在此输入图像描述

通过 stackoverflow,有一个解决方案可以自动将所有输出作为变量:

1-配置输出变量:

在此输入图像描述

2-配置powershell脚本来获取它们并填充它

电源外壳

3-现在怎么办?变量名称是什么?如何在 Databricks Bearer Token 解决方案中使用它?

Mer*_*SFT 5

$json = Get-Content $env:jsonPath | Out-String | ConvertFrom-Json

foreach($prop in $json.psobject.properties) {
    Write-Host("##vso[task.setvariable variable=$($prop.Name);]$($prop.Value.value)")
}
Run Code Online (Sandbox Code Playgroud)

该脚本的逻辑用于循环遍历output之前 terraform 生成的 json 文件。

此行的"##vso[task.setvariable variable=$($prop.Name);]$($prop.Value.value)"目的是将json 文件name中显示的值设置output为管道变量名称,并将输出 json 文件中的相应值设置为其管道变量的值。

这是他们的地图展示:

Terraform Output Json                          Azure devops pipeline 

   Output name            ================>      varaible name

   Output value           ================>      variable value
Run Code Online (Sandbox Code Playgroud)

terraform因此,在 Databricks Bearer Token 任务中,您可以通过在file:中配置的名称直接调用该变量workspace_name