对于 Terraform 计划中的循环?

For loop in a Terraform plan?

$ terraform -v
Terraform v0.14.6

我有一个为我的一些 AWS ECS 服务设置警报的 Terraform 计划,它看起来像这样

module "ecs_high_cpu_service_aaa_alarm" {
  source       = "../modules/cw_alarm"
  alarm_name   = "ecs-high-cpu-service-aaa-alarm"
  service_name = "service-aaa"
  // Other parameters
}

module "ecs_high_cpu_service_bbb_alarm" {
  source       = "../modules/cw_alarm"
  alarm_name   = "ecs-high-cpu-service-bbb-alarm"
  service_name = "service-bbb"
  // Other parameters
}

module "ecs_high_cpu_service_123_alarm" {
  source       = "../modules/cw_alarm"
  alarm_name   = "ecs-high-cpu-service-123-alarm"
  service_name = "service-123"
  // Other parameters
}

// More alarms with similar setup as above

如您所见,所有模块的设置都相似,只是名称、alarm_nameservice_name 参数不同。有没有一种方法可以设置一个 for 循环,该循环将循环遍历地图以针对计划设置模块?

根据 Mark B(感谢!)的评论,这有效。

variables.tf
------------
variable "service_map" {
  type        = map
  default     = {
    service-aaa = "ecs-high-cpu-service-aaa-alarm"
    service-bbb = "ecs-high-cpu-service-bbb-alarm"
    service-123 = "ecs-high-cpu-service-123-alarm"
  }
  description = "Service map; key = service name, value = alarm name"
}

main.tf
-------
module "alarms" {
  for_each      = var.service_map
  source        = "../modules/cw_alarm"
  service_name  = each.key
  alarm_name    = each.value
  // Other parameters
}