是否可以在代码块内而不是在web界面中更改Terraform Cloud工作空间执行模式?



是否可以将Terraform Cloud工作空间更改为本地执行模式而不是远程默认模式?

由于工作区可以在本地创建,因此不能在代码块中设置选项似乎很不方便。

terraform {
required_version = ">= 1.3.6"
cloud {
organization = "org"
workspaces {
tags = ["foo", "bar"]
}
}
}

虽然原则上可以在现有配置中从Terraform CLI创建新的工作区,但这仅限于工作区的功能,而这些功能也可以用于使用Terraform Cloud的人员。远程操作是Terraform Cloud中的工作空间级设置,因此不能直接从Terraform CLI进行控制。

Terraform Cloud的设计通常将工作区视为以中央方式管理的长期对象,而不是通过CLI命令直接快速创建和销毁的对象(尽管这在技术上是可能的)。

对于您想要系统地管理工作空间的情况,我建议您使用单独的管理工作空间——也就是说,您手动创建的工作空间,然后负责声明所有其他工作空间——并使用hashicorp/tfe提供程序预先声明您希望它们使用的所有设置的工作空间。

可以将execution_mode作为tfe_workspace资源配置的一部分来选择执行模式。

这是地形中未解决的问题,但您可以通过curl来解决,例如:

TF_WORKSPACE="something"
MY_ORGANISATION="else"
TF_BACKEND_TOKEN="1234567890"
TF_URL="https://app.terraform.io/api/v2/organizations/${MY_ORGANISATION}/workspaces/${TF_WORKSPACE}"
terraform workspace new ${TF_WORKSPACE} && 
curl 
--header "Authorization: Bearer ${TF_BACKEND_TOKEN}" 
--header "Content-Type: application/vnd.api+json" 
--request PATCH --data 
'{"data": {"type": "workspaces", "attributes": {"execution-mode": "local"}}}' 
${TF_URL}
# ... later
terraform workspace select ${TF_WORKSPACE}
terraform apply -auto-approve

最新更新