在Terraform远程后端中使用变量

时间:2019-07-01 04:04:52

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

backend configuration documentation对此进行了详细介绍。要注意的重点是:

  

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

如果要使其易于配置,则可以对静态部件(例如后端的类型,例如S3)使用partial configuration,然后在运行时通过环境变量或通过命令行交互地提供配置标志。

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

答案 1 :(得分:1)

我遇到了同样的问题,对附加的init / wrapper脚本的需求感到非常失望。一段时间以前,我开始使用Terragrunt。

值得一看的是Terragrunt,因为它弥补了Terraform与某些时候缺少使用变量之间的差距,例如对于远程后端配置: https://terragrunt.gruntwork.io/docs/getting-started/quick-start/#keep-your-backend-configuration-dry