# Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 data "aws_availability_zones" "available" { state = "available" filter { name = "zone-name" values = ["*"] } } resource "random_string" "cluster_id" { length = 8 lower = true upper = false numeric = false special = false } resource "aws_vpc" "vpc" { cidr_block = var.cidr enable_dns_hostnames = true enable_dns_support = true tags = merge( var.common_tags, { "Name" = var.name }, ) } resource "aws_subnet" "subnet" { count = length(data.aws_availability_zones.available.names) vpc_id = aws_vpc.vpc.id cidr_block = cidrsubnet(var.cidr, 8, count.index) availability_zone = data.aws_availability_zones.available.names[count.index] map_public_ip_on_launch = true tags = merge( var.common_tags, { "Name" = "${var.name}-subnet-${data.aws_availability_zones.available.names[count.index]}" }, ) } resource "aws_internet_gateway" "igw" { vpc_id = aws_vpc.vpc.id tags = merge( var.common_tags, { "Name" = "${var.name}-igw" }, ) } resource "aws_route" "igw" { route_table_id = aws_vpc.vpc.default_route_table_id destination_cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.igw.id } resource "aws_security_group" "default" { vpc_id = aws_vpc.vpc.id ingress { description = "allow_ingress_from_all" from_port = 0 to_port = 0 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } egress { description = "allow_egress_from_all" from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } tags = merge( var.common_tags, { "Name" = "${var.name}-default" }, ) }