# Create security group for web servers
resource "aws_security_group" "main" {
  description = var.sg_description
  vpc_id      = var.vpc_id
  name        = var.name
  tags        = merge(var.tags, { "eiso-exception" = "aws.08.30" })

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_security_group_rule" "main-egress" {
  description       = "Allow all outbound traffic."
  type              = "egress"
  from_port         = 0
  to_port           = 0
  protocol          = "-1"
  cidr_blocks       = ["0.0.0.0/0"]
  security_group_id = aws_security_group.main.id
}

resource "aws_security_group_rule" "main-ingress" {
  count                    = length(var.ingress_template)
  type                     = "ingress"
  description              = var.ingress_template[count.index]["description"]
  from_port                = var.ingress_template[count.index]["from_port"]
  to_port                  = var.ingress_template[count.index]["to_port"]
  protocol                 = var.protocol
  source_security_group_id = var.ingress_template[count.index]["source_sg_id"]
  security_group_id        = aws_security_group.main.id
}
