【问题标题】:Use variable in Terraform remote backend在 Terraform 远程后端使用变量
【发布时间】:2019-11-11 18:27:32
【问题描述】:
# Using a single workspace:
terraform {
  backend "remote" {
    hostname = "app.terraform.io"
    organization = "company"

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

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

Terraform documentation 似乎也没有提到任何相关的事情。

【问题讨论】:

    标签: terraform terraform-provider-azure terraform-remote-state


    【解决方案1】:

    backend configuration documentation 对此进行了一些详细介绍。主要需要注意的是:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-11-03
        • 2020-09-05
        • 2020-05-03
        • 2016-10-30
        • 2017-10-04
        • 2018-12-14
        • 2021-05-06
        • 2019-11-17
        相关资源
        最近更新 更多