【问题标题】:Specify terraform workspace in HCL在 HCL 中指定 terraform 工作区
【发布时间】:2025-12-07 13:10:02
【问题描述】:

有没有办法在 HCL 中为远程状态提供程序指定工作区?如何确保协作者使用正确的工作空间?我希望看到类似的东西

terraform {
  backend "s3" {
    workspace = "someworkspace"
    ...
  }
}

Terraform 的文档描述了如何使用 workspace_key_prefix,但这不是我想要的。

例如,如果一个团队成员运行 terraform workspace select dev 然后 terraform apply 然后另一个团队成员运行 terraform apply 没有首先运行 terraform workspace terraform 将重新部署定义的资源(因为适当的未选择工作区)。

【问题讨论】:

  • 目前尚不清楚您要在这里实现什么。如果您选择一个工作区(使用terraform workspace selectterraform workspace new),Terraform 将自动分离要使用的状态文件。您能否详细说明您正在尝试做的事情以及不适合您的事情?
  • 这是您正在寻找的即将推出的功能:hashicorp.com/blog/terraform-remote-operations
  • @ydaetskcoR PTAL 添加了一个示例。当一名团队成员使用terraform workspace select dev 然后terraform plan 时,问题就出现了。当下一个队友运行 plan 而没有先运行 workspace 时,您将获得重复部署。
  • 重复的环境(或使用terraform.workspace 进行的足够接近的模数更改)是工作空间旨在实现的目标。如果你不想要,那么你不应该使用它们。
  • “重复环境”是错误的词。我更感兴趣的是(通过 HCL)指定任何给定计划应针对的环境。遵循 terraform.io/docs/enterprise/guides/recommended-practices/… 中概述的最佳实践

标签: terraform


【解决方案1】:

找到了解决方法。您可以将 environment 文件提交到 VCS (.terraform/environment)。运行terraform apply 的其他人将针对环境文件指定的工作空间。

【讨论】: