是否可以将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