通过地形变量的并行实例?
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?这似乎很乏味而且离题!
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 脚本之外。
我对 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?这似乎很乏味而且离题!
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 脚本之外。