Terraform计划中的循环


$ terraform -v
Terraform v0.14.6

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

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
}

最新更新