Terraform Azure Pipeline 未获取工作区

问题描述

我在 Azure Devops 中创建了一个使用 terraform 模块的管道。我已经能够运行我的管道,但我在检测创建的​​工作区时遇到问题。

管道任务描述如下:

enter image description here

bash 脚本会在工作区不存在的情况下创建它,您可以在这里看到脚本:

#!/bin/bash

echo "*************************************************************"
echo "*              Create or select workspace                   *"
echo "*************************************************************"

if [ $(terraform workspace list | grep -c "$1") -eq 0 ] ; then
  echo "** Create new workspace $1 **"
  terraform workspace new "$1" -no-color
else
  echo "** Switch to workspace $1 **"
  terraform workspace select "$1" -no-color
fi

我确定工作区已创建,但 terraform 后续任务并未占用工作区。

enter image description here

您可以看到正在设置而不是开发。这是在 terraform plan 任务

2021-03-12T18:13:48.0424826Z [1m  # azurerm_resource_group.k8s[0m will be created[0m[0m
2021-03-12T18:13:48.0426216Z [0m  [32m+[0m[0m resource "azurerm_resource_group" "k8s" {
2021-03-12T18:13:48.0427763Z       [32m+[0m [0m[1m[0mid[0m[0m       = (kNown after apply)
2021-03-12T18:13:48.0428525Z       [32m+[0m [0m[1m[0mlocation[0m[0m = "eastus"
2021-03-12T18:13:48.0429278Z       [32m+[0m [0m[1m[0mname[0m[0m     = "default-k8s"
2021-03-12T18:13:48.0430000Z       [32m+[0m [0m[1m[0mtags[0m[0m     = {
2021-03-12T18:13:48.0430713Z           [32m+[0m [0m"environment" = "default"
2021-03-12T18:13:48.0431181Z         }
2021-03-12T18:13:48.0431534Z     }

以前是否有人遇到过这个问题,如果有的话,有没有关于让 terraform 任务检测在 bash 脚本中创建的工作区的建议?

解决方法

我在 bash 脚本部分遗漏了一个关键细节。这是我希望执行脚本的工作目录。

enter image description here 您可以在“高级”部分看到。如果没有该路径,脚本就会在错误的位置运行。

因此,我拥有 development 工作区和资源组 development-k8s

2021-03-12T19:40:13.7898170Z [1m  # azurerm_resource_group.k8s[0m will be created[0m[0m
2021-03-12T19:40:13.7898875Z [0m  [32m+[0m[0m resource "azurerm_resource_group" "k8s" {
2021-03-12T19:40:13.7928911Z       [32m+[0m [0m[1m[0mid[0m[0m       = (known after apply)
2021-03-12T19:40:13.7930291Z       [32m+[0m [0m[1m[0mlocation[0m[0m = "eastus"
2021-03-12T19:40:13.7954850Z       [32m+[0m [0m[1m[0mname[0m[0m     = "development-k8s"
2021-03-12T19:40:13.7955573Z       [32m+[0m [0m[1m[0mtags[0m[0m     = {
2021-03-12T19:40:13.7956351Z           [32m+[0m [0m"environment" = "development"
2021-03-12T19:40:13.7956951Z         }
2021-03-12T19:40:13.7957351Z     } 

我希望它可以为您节省我在整个过程中来回花费的几个小时:)