如何在 Azure DevOps 管道中使用 Terraform 输出作为变量

How to use terraform outputs as variables in Azure DevOps pipeline

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

所以我在 output.tf

中定义了输出
output "workspace_name" {
  value = azurerm_databricks_workspace.databricks.name
}

我可以看到输出:

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

1- 配置输出变量:

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

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

$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)")
}

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

而这一行"##vso[task.setvariable variable=$($prop.Name);]$($prop.Value.value)"旨在将output json文件中显示的name设置为管道变量名,并从输出中设置其对应的值json 文件到其管道变量的值。

这是他们的映射表演:

Terraform Output Json                          Azure devops pipeline 

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

   Output value           ================>      variable value

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

我注意到您正在使用 Azure Devops 创建 Databricks Bearer 令牌,这可以通过使用支持 AAD 令牌的 Databricks Labs Terraform 提供程序来简化。