@@ -16,6 +16,8 @@ locals {
1616 nat_az_keys = var. enable_nat_gateway ? (
1717 var. single_nat_gateway ? { (var.availability_zones[0 ]) = 0 } : local. az_keys
1818 ) : {}
19+
20+ tgw_az_keys = length (var. transit_gateway_subnet_cidrs ) > 0 ? local. az_keys : {}
1921}
2022
2123# ------------------------------------------------------------------------------
@@ -115,6 +117,39 @@ resource "aws_route_table_association" "private" {
115117 route_table_id = aws_route_table. private [each . key ]. id
116118}
117119
120+ # ------------------------------------------------------------------------------
121+ # Transit Gateway Subnets (optional)
122+ # ------------------------------------------------------------------------------
123+
124+ resource "aws_subnet" "transit_gateway" {
125+ for_each = local. tgw_az_keys
126+
127+ vpc_id = aws_vpc. this . id
128+ cidr_block = var. transit_gateway_subnet_cidrs [each . value ]
129+ availability_zone = each. key
130+
131+ tags = {
132+ Name = " ${ var . name } -tgw-${ each . key } "
133+ }
134+ }
135+
136+ resource "aws_route_table" "transit_gateway" {
137+ for_each = local. tgw_az_keys
138+
139+ vpc_id = aws_vpc. this . id
140+
141+ tags = {
142+ Name = " ${ var . name } -tgw-${ each . key } "
143+ }
144+ }
145+
146+ resource "aws_route_table_association" "transit_gateway" {
147+ for_each = aws_subnet. transit_gateway
148+
149+ subnet_id = each. value . id
150+ route_table_id = aws_route_table. transit_gateway [each . key ]. id
151+ }
152+
118153# ------------------------------------------------------------------------------
119154# NAT Gateway (optional)
120155# ------------------------------------------------------------------------------
0 commit comments