如何在 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 提供程序来简化。
我正在尝试将使用 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 提供程序来简化。