modules/net-vpn-ha/recipe-vpn-aws-gcp/aws.tf (59 lines of code) (raw):

/** * Copyright 2025 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ resource "aws_vpc" "vpc" { cidr_block = var.aws_vpc_cidr_block } resource "aws_vpn_gateway" "vpn_gateway" { vpc_id = aws_vpc.vpc.id amazon_side_asn = var.aws_asn tags = { Name = "vpn_gateway" } } resource "aws_customer_gateway" "customer_gateways" { count = 2 bgp_asn = var.gcp_asn ip_address = module.gcp_vpn.gateway.vpn_interfaces[count.index].ip_address type = "ipsec.1" tags = { Name = "customer-gateway-${count.index}" } } resource "aws_vpn_gateway_attachment" "vpn_gateway_attachment" { vpc_id = aws_vpc.vpc.id vpn_gateway_id = aws_vpn_gateway.vpn_gateway.id } resource "aws_vpn_connection" "vpn_connections" { count = 2 vpn_gateway_id = aws_vpn_gateway.vpn_gateway.id customer_gateway_id = aws_customer_gateway.customer_gateways[count.index].id type = "ipsec.1" tunnel1_preshared_key = var.shared_secret tunnel2_preshared_key = var.shared_secret } data "aws_route_table" "route_table" { count = var.propagate_routes ? 1 : 0 vpc_id = aws_vpc.vpc.id filter { name = "association.main" values = ["true"] } } resource "aws_vpn_gateway_route_propagation" "vpn_gateway_route_propagation" { count = var.propagate_routes ? 1 : 0 vpn_gateway_id = aws_vpn_gateway.vpn_gateway.id route_table_id = data.aws_route_table.route_table[0].id }