3
# Using a single workspace:
terraform {
  backend "remote" {
    hostname = "app.terraform.io"
    organization = "company"

    workspaces {
      name = "my-app-prod"
    }
  }
}

对于 Terraform 远程后端,是否有一种方法可以使用变量来指定组织/工作区名称而不是那里的硬编码值?

Terraform 文档 似乎也没有提及任何相关内容。

4

2 回答 2

4

后端配置文档对此进行了详细介绍。主要需要注意的是:

只能指定一个后端,并且配置可能不包含插值。Terraform 将对此进行验证。

如果您想让它易于配置,那么您可以对静态部分使用部分配置(例如后端的类型,如 S3),然后在运行时通过环境变量或命令行标志以交互方式提供配置。

我个人将 Terraform 操作包装在一个小 shell 脚本中,该脚本terraform init使用命令行标志运行,该脚本使用适当的 S3 存储桶(例如,每个项目和 AWS 帐户使用不同的存储桶)并确保状态文件位置与我正在工作的目录的路径匹配上。

于 2019-07-01T07:20:45.760 回答
1

我遇到了同样的问题,并且对需要额外的 init/wrapper 脚本感到非常失望。前段时间我开始使用 Terragrunt。

值得一看 Terragrunt,因为它缩小了 Terraform 和在某些点上缺少使用变量之间的差距,例如远程后端配置: https ://terragrunt.gruntwork.io/docs/getting-started/quick-start /#keep-your-backend-configuration-dry

于 2020-08-08T11:10:41.643 回答