通过地形变量的并行实例?

Parallel instances via terraform variables?

我对 terraform 变量应该做什么感到困惑。现在他们似乎对解决我的具体要求毫无用处,也许我真的找错人了。假设我有这样的配置:

variable "majorVersion" {
  type        = "string"
}

module "media-assets" {
  majorVersion   = "${var.majorVersion}"
  region         = "us-east-1"
  bucket         = "uploads-${var.majorVersion}"
  source         = "./modules/media-assets"
  user           = "appics-production"
}

让我们假设资产模块现在简单地定义了 S3 存储桶。如果我像这样 运行 terraform 一切顺利:

terraform apply -var="majorVersion=v1"

但是,如果我 运行 再次使用

terraform apply -var="majorVersion=v2"

我要terraform不要管v1的资源!相反,terraform 想要拆除 v1!!我怎样才能完成一组参数化的配置,而不必为每个版本重新编写整个 shebang?这似乎很乏味而且离题!

Workspaces

Workspace 是您的朋友。您可以使用工作区在 'setups' 之间切换,而无需触摸您的脚本。这些 'setups' 可以是版本、环境等等。

为了满足您的特定需求,您可以在 variable.tf

variable "majorVersion" {
  type = "map"

  default = {
    v1 = "v1"
    v2 = "v2"
  }
}


module "media-assets" {
  majorVersion   = "${var.majorVersion[terraform.workspace]}"
}

在您 运行 您的应用命令之前,select 正确的工作区

terraform workspace select v1

尽管如此,您可能会看到您需要随时添加到 majorVersion 映射中。为此,我建议将版本控制排除在 terraform 脚本之外。