目前,我的 terraform 基于硬编码到环境中的 AMI 创建了一个实例。我的问题是这个特定资源有三个可能的用例。是否可以将其写入 terraform,以便如果我输入变量“Dev”,将选择一个 AMI,并选择“Prod”另一个 AMI?
答案 0 :(得分:0)
定义一个变量为 env
基于值覆盖变量值
var.env != "dev" ? var.env : "dev ami "
在资源中使用变量作为ami
答案 1 :(得分:0)
听起来您想要一个指定环境的输入变量,然后根据环境选择不同的值。
让我们先定义变量,这样我们就能明白我们在说什么:
variable "environment" {
type = string
validation {
condition = contains(["Dev", "Prod"], var.environment)
error_message = "Environment must be either 'Dev' or 'Prod'."
}
}
定义后,我们的问题是根据给定的字符串查找值。一个典型的方法是定义一个映射值,为每个有效输入值指定一个输出值,在 Terraform 中我们可以将这样的东西声明为本地值:
locals {
ami_ids = tomap({
Dev = "ami-abc123"
Prod = "ami-xyz789"
})
}
现在当需要引用指定环境对应的AMI ID时,可以使用索引语法通过环境键访问相应的元素:
ami = local.ami_ids[var.environment]