12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- locals {
- azs = slice(data.aws_availability_zones.available.names,0,2)
- subnets = [
- cidrsubnet(var.security_vpc_cidr,3,0),
- cidrsubnet(var.security_vpc_cidr,3,1),
- cidrsubnet(var.security_vpc_cidr,3,2),
- cidrsubnet(var.security_vpc_cidr,3,3),
- cidrsubnet(var.security_vpc_cidr,3,4),
- cidrsubnet(var.security_vpc_cidr,3,5),
- cidrsubnet(var.security_vpc_cidr,3,6),
- cidrsubnet(var.security_vpc_cidr,3,7),
- ]
- }
- data "aws_availability_zones" "available" {
- state = "available"
- }
- module "vpc" {
- source = "terraform-aws-modules/vpc/aws"
- version = "~> v2.0"
- name = "security_vpc_${var.aws_partition_alias}_${var.environment}"
- cidr = var.security_vpc_cidr
- azs = local.azs
- # 2 private and 2 public here, but 2 more of each will be created after in the same azs
- private_subnets = [
- local.subnets[0],
- local.subnets[1],
- ]
- private_subnet_tags = {
- "Name" = "FW private (private)"
- }
- public_subnets = [
- local.subnets[4],
- local.subnets[5]
- ]
- public_subnet_tags = {
- "Name" = "FW Untrusted (Public)"
- }
- enable_nat_gateway = false
- enable_vpn_gateway = false
- enable_dns_hostnames = true
- enable_s3_endpoint = true
- enable_dynamodb_endpoint = false
- enable_sts_endpoint = false
- enable_kms_endpoint = false
- enable_dhcp_options = true
- enable_ec2_endpoint = true # PA likes a local ec2 endpoint
- ec2_endpoint_security_group_ids = [ module.aws_endpoints_sg.this_security_group_id ]
- dhcp_options_domain_name = var.inside_domain
- tags = merge(var.standard_tags, var.tags)
- }
- resource "aws_subnet" "mgmt" {
- count = 2
- depends_on = [ module.vpc ]
- vpc_id = module.vpc.vpc_id
- cidr_block = local.subnets[6 + count.index]
- availability_zone = local.azs[count.index]
- tags = {
- Name = "FW Management (Public)"
- }
- }
- resource "aws_route_table_association" "mgmt-to-internet" {
- count = 2
- depends_on = [ aws_subnet.mgmt, module.vpc ]
- subnet_id = aws_subnet.mgmt[count.index].id
- route_table_id = module.vpc.public_route_table_ids[0] # only 1 public route table
- }
- resource "aws_subnet" "standalone_tgw" {
- # A standalone private subnet that could be connected to the tgw
- count = 2
- depends_on = [ module.vpc ]
- vpc_id = module.vpc.vpc_id
- cidr_block = local.subnets[2 + count.index]
- availability_zone = local.azs[count.index]
- tags = {
- Name = "Standalone TGW"
- }
- }
|