From f6ca806831ca025f502b70520a710ffb5aef0f69 Mon Sep 17 00:00:00 2001 From: badra001 Date: Wed, 12 Oct 2022 13:13:01 -0400 Subject: [PATCH] update --- vpc-transit-gateway-association/README.md | 16 ++++-- .../data.transit-gateway.tf | 49 ++++++++++++++++++- vpc-transit-gateway-association/outputs.tf | 28 +++++++++-- 3 files changed, 83 insertions(+), 10 deletions(-) diff --git a/vpc-transit-gateway-association/README.md b/vpc-transit-gateway-association/README.md index bcf2684..322eae6 100644 --- a/vpc-transit-gateway-association/README.md +++ b/vpc-transit-gateway-association/README.md @@ -42,8 +42,12 @@ No modules. | [aws_arn.network_account](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/arn) | data source | | [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | | [aws_caller_identity.network_account](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source | -| [aws_ec2_transit_gateway.tgw_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source | -| [aws_ec2_transit_gateway.tgw_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source | +| [aws_ec2_transit_gateway.gateway_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source | +| [aws_ec2_transit_gateway.gateway_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway) | data source | +| [aws_ec2_transit_gateway_route_table.route_tables_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_table) | data source | +| [aws_ec2_transit_gateway_route_table.route_tables_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_table) | data source | +| [aws_ec2_transit_gateway_route_tables.route_tables_peer](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_tables) | data source | +| [aws_ec2_transit_gateway_route_tables.route_tables_self](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ec2_transit_gateway_route_tables) | data source | | [aws_iam_account_alias.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_account_alias) | data source | | [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source | @@ -67,5 +71,9 @@ No modules. | Name | Description | |------|-------------| -| [tgw\_peer](#output\_tgw\_peer) | Transit Gateway peer (other region) | -| [tgw\_self](#output\_tgw\_self) | Transit Gateway self (this region) | +| [gateway\_peer](#output\_gateway\_peer) | Transit Gateway peer (other region) | +| [gateway\_self](#output\_gateway\_self) | Transit Gateway self (this region) | +| [map\_route\_tables\_peer](#output\_map\_route\_tables\_peer) | Transit Gateway route tables map (VRF:id) peer (other region) | +| [map\_route\_tables\_self](#output\_map\_route\_tables\_self) | Transit Gateway route tables map (VRF:id) self (this region) | +| [route\_tables\_peer](#output\_route\_tables\_peer) | Transit Gateway route tables peer (other region) | +| [route\_tables\_self](#output\_route\_tables\_self) | Transit Gateway route tables self (this region) | diff --git a/vpc-transit-gateway-association/data.transit-gateway.tf b/vpc-transit-gateway-association/data.transit-gateway.tf index f00470c..1ecaf82 100644 --- a/vpc-transit-gateway-association/data.transit-gateway.tf +++ b/vpc-transit-gateway-association/data.transit-gateway.tf @@ -1,4 +1,7 @@ -data "aws_ec2_transit_gateway" "tgw_self" { +#--- +# transit gateways + +data "aws_ec2_transit_gateway" "gateway_self" { provider = aws.self filter { name = "owner-id" @@ -6,10 +9,52 @@ data "aws_ec2_transit_gateway" "tgw_self" { } } -data "aws_ec2_transit_gateway" "tgw_peer" { +data "aws_ec2_transit_gateway" "gateway_peer" { provider = aws.peer filter { name = "owner-id" values = [data.aws_arn.network_account.account] } } + +#--- +# tgw route tables self +#--- +data "aws_ec2_transit_gateway_route_tables" "route_tables_self" { + provider = aws.self + filter { + name = "transit-gateway-id" + values = [data.aws_ec2_transit_gateway.gateway_self.id] + } +} + +data "aws_ec2_transit_gateway_route_table" "route_tables_self" { + provider = aws.self + for_each = toset(data.aws_ec2_transit_gateway_route_tables.route_tables_self.ids) + id = each.key +} + +locals { + transit_gateway_route_table_ids_self = { for k, v in data.aws_ec2_transit_gateway_route_table.route_tables_self : v.tags["boc:network_vrf"] => k } +} + +#--- +# route tables west +#--- +data "aws_ec2_transit_gateway_route_tables" "route_tables_peer" { + provider = aws.peer + filter { + name = "transit-gateway-id" + values = [data.aws_ec2_transit_gateway.gateway_peer.id] + } +} + +data "aws_ec2_transit_gateway_route_table" "route_tables_peer" { + provider = aws.peer + for_each = toset(data.aws_ec2_transit_gateway_route_tables.route_tables_peer.ids) + id = each.key +} + +locals { + transit_gateway_route_table_ids_peer = { for k, v in data.aws_ec2_transit_gateway_route_table.route_tables_peer : v.tags["boc:network_vrf"] => k } +} diff --git a/vpc-transit-gateway-association/outputs.tf b/vpc-transit-gateway-association/outputs.tf index f4812f3..3857b31 100644 --- a/vpc-transit-gateway-association/outputs.tf +++ b/vpc-transit-gateway-association/outputs.tf @@ -1,9 +1,29 @@ -output "tgw_self" { +output "gateway_self" { description = "Transit Gateway self (this region)" - value = data.aws_ec2_transit_gateway.tgw_self.id + value = data.aws_ec2_transit_gateway.gateway_self.id } -output "tgw_peer" { +output "gateway_peer" { description = "Transit Gateway peer (other region)" - value = data.aws_ec2_transit_gateway.tgw_peer.id + value = data.aws_ec2_transit_gateway.gateway_peer.id +} + +output "route_tables_self" { + description = "Transit Gateway route tables self (this region)" + value = data.aws_ec2_transit_gateway_route_table.route_tables_self +} + +output "route_tables_peer" { + description = "Transit Gateway route tables peer (other region)" + value = data.aws_ec2_transit_gateway_route_table.route_tables_peer +} + +output "map_route_tables_self" { + description = "Transit Gateway route tables map (VRF:id) self (this region)" + value = local.transit_gateway_route_table_ids_self +} + +output "map_route_tables_peer" { + description = "Transit Gateway route tables map (VRF:id) peer (other region)" + value = local.transit_gateway_route_table_ids_peer }