| # Copyright (c) HashiCorp, Inc. |
| # SPDX-License-Identifier: BUSL-1.1 |
| |
| 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" |
| }, |
| ) |
| } |