使用带有terraform的count在多个子网中启动EC2服务器



我有一个用例,其中我设置了变量instance_count=3,我有2个Private_subnet,它是一个列表["subnet-id-a","subnet-id-B"],我希望我的地形代码动态生成一个本地地图或列表,可以像这个一样

subnets = {
01 = subnet-id-A
02 = subnet-id-B
03 = subnet-id-A
}
OR
subnets = ["subnet-id-A","subnet-id-B","subnet-id-A"]

如果实例计数变为4,则可能是这样的

subnets = {
01 = subnet-id-A
02 = subnet-id-B
03 = subnet-id-A
04 = subnet-id-B
}
OR
subnets = ["subnet-id-A","subnet-id-B","subnet-id-A","subnet-id-B"]

如果实例计数变为2,则可能是这样的

subnets = {
01 = subnet-id-A
02 = subnet-id-B
}
OR
subnets = ["subnet-id-A","subnet-id-B"]

Subnet_ids是一个包含所有私有子网的列表。

这是代码

locals {
formatted_count = [for index in range(var.instance_count) : format("0%s", index + 1)]
instances_count = toset(local.formatted_count)
}
module "ec2" {
for_each                    = local.instances_count
source                      = "terraform-aws-modules/ec2-instance/aws"
version                     = "3.2.0"
name                        = var.name
ami                         = var.ami
instance_type               = var.instance_type
key_name                    = var.key_name
monitoring                  = var.monitoring
tags                        = var.tags
vpc_security_group_ids      = var.vpc_security_group_ids
subnet_id                   = element(var.subnet_ids,each.value - 1)
}

最新更新