通过terraform变量的并行实例?

时间:2019-06-28 15:00:40

标签: terraform terraform-provider-aws

我对地形变量应该做什么感到困惑。现在,他们似乎根本无法解决我的特定要求,也许我真的在树错了树。假设我有一个这样的配置:

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?看起来很乏味,而且不重要!

1 个答案:

答案 0 :(得分:1)

Workspaces

工作区是您的朋友。您可以使用工作区在“设置”之间进行切换,而无需触摸脚本。这些“设置”可以是版本,环境等等。

要满足您的特定需求,您可以将其放在您的变量中。tf

variable "majorVersion" {
  type = "map"

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


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

在运行apply命令之前,选择正确的工作区

terraform workspace select v1

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