我有一个创建目标组的资源。我想修改资源,使其能够使用特定的命名约定创建n个目标组。
resource "aws_lb_target_group" "main" {
name = "${var.name}-tg"
port = var.forward_port
protocol = var.forward_protocol
target_type = var.target_type
deregistration_delay = var.deregistration_delay
health_check {
interval = var.interval
path = var.path
}
stickiness {
type = var.cookie_type
}
}
我想以这样一种方式修改它,如果只创建了一个目标组,它应该将其命名为test-tg1,但如果有多个目标组的话,它应该像test-tg1一样将索引添加到名称中。此外,每个目标组都可以有自己的一组特定变量值。我怎样才能做到这一点?
在这种情况下,您可以使用for_each来创建具有不同配置的多个TG。创建一个map(object(((类型的变量,它允许您按照期望的方式放置值。我放了一个示例代码。参考以下内容。
请将以下变量的值放在地形.tfvars文件中
cookie_type,路径,注销延迟
变量
variable "TG_conf" {
type = map(object({
port = string
protocol = string
target_type = string
interval = string
cookie_type = string
path = string
deregistration_delay = string
}))
}
地形.tfvars
TG_conf = {
"test-tg" = {
port = 80
protocol = HTTP
target_type = "instance
interval = "5"
cookie_type = string
path = string
deregistration_delay = string
}
alb.tf
resource "aws_lb_target_group" "main" {
for_each = var.TG_conf
name = "${each.key}"
port = each.value.port
protocol = each.value.protocol
target_type = each.value.target_type
deregistration_delay = each.value.deregistration_delay
health_check {
interval = each.value.interval
path = each.value.path
}
stickiness {
type = each.value.cookie_type
}
}