问题描述
我在 Azure Devops 中创建了一个使用 terraform 模块的管道。我已经能够运行我的管道,但我在检测创建的工作区时遇到问题。
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 后续任务并未占用工作区。
您可以看到正在设置默认而不是开发。这是在 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 脚本部分遗漏了一个关键细节。这是我希望执行脚本的工作目录。
您可以在“高级”部分看到。如果没有该路径,脚本就会在错误的位置运行。
因此,我拥有 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 }
我希望它可以为您节省我在整个过程中来回花费的几个小时:)