diff --git a/modules/net-vpc/README.md b/modules/net-vpc/README.md
index 124df134..6e4c8089 100644
--- a/modules/net-vpc/README.md
+++ b/modules/net-vpc/README.md
@@ -460,7 +460,7 @@ module "vpc" {
| [name](variables.tf#L84) | The name of the network being created. | string
| ✓ | |
| [project_id](variables.tf#L100) | The ID of the project where this VPC will be created. | string
| ✓ | |
| [auto_create_subnetworks](variables.tf#L17) | Set to true to create an auto mode subnet, defaults to custom mode. | bool
| | false
|
-| [create_default_routes](variables.tf#L23) | Toggle creation of googleapis private/restricted routes. | object({…})
| | {}
|
+| [create_default_routes](variables.tf#L23) | Toggle creation of googleapis private/restricted routes. | object({…})
| | {}
|
| [data_folder](variables.tf#L35) | An optional folder containing the subnet configurations in YaML format. | string
| | null
|
| [delete_default_routes_on_create](variables.tf#L41) | Set to true to delete the default routes at creation time. | bool
| | false
|
| [description](variables.tf#L47) | An optional description of this resource (triggers recreation on change). | string
| | "Terraform-managed."
|
diff --git a/modules/net-vpc/routes.tf b/modules/net-vpc/routes.tf
index e0603828..65a310ab 100644
--- a/modules/net-vpc/routes.tf
+++ b/modules/net-vpc/routes.tf
@@ -17,7 +17,23 @@
# tfdoc:file:description Route resources.
locals {
- _routes = var.routes == null ? {} : var.routes
+ _googleapis_ranges = {
+ private = "199.36.153.8/30"
+ private-6 = "2600:2d00:0002:2000::/64"
+ restricted = "199.36.153.4/30"
+ restricted-6 = "2600:2d00:0002:1000::/64"
+ }
+ _googleapis_routes = {
+ for k, v in local._googleapis_ranges : "${k}-googleapis" => {
+ dest_range = v
+ next_hop = "default-internet-gateway"
+ next_hop_type = "gateway"
+ priority = 1000
+ tags = null
+ }
+ if var.create_default_routes[k]
+ }
+ _routes = merge(local._googleapis_routes, coalesce(var.routes, {}))
routes = {
gateway = { for k, v in local._routes : k => v if v.next_hop_type == "gateway" }
ilb = { for k, v in local._routes : k => v if v.next_hop_type == "ilb" }
@@ -88,43 +104,3 @@ resource "google_compute_route" "vpn_tunnel" {
tags = each.value.tags
next_hop_vpn_tunnel = each.value.next_hop
}
-
-resource "google_compute_route" "private" {
- count = var.create_default_routes.private ? 1 : 0
- project = var.project_id
- network = local.network.name
- name = "private-googleapis-default"
- description = "Terraform-managed."
- dest_range = "199.36.153.8/30"
- next_hop_gateway = "default-internet-gateway"
-}
-
-resource "google_compute_route" "private6" {
- count = var.create_default_routes.private6 ? 1 : 0
- project = var.project_id
- network = local.network.name
- name = "private6-googleapis-default"
- description = "Terraform-managed."
- dest_range = "2600:2d00:0002:2000::/64"
- next_hop_gateway = "default-internet-gateway"
-}
-
-resource "google_compute_route" "restricted" {
- count = var.create_default_routes.restricted ? 1 : 0
- project = var.project_id
- network = local.network.name
- name = "restricted-googleapis-default"
- description = "Terraform-managed."
- dest_range = "199.36.153.4/30"
- next_hop_gateway = "default-internet-gateway"
-}
-
-resource "google_compute_route" "restricted6" {
- count = var.create_default_routes.restricted6 ? 1 : 0
- project = var.project_id
- network = local.network.name
- name = "restricted6-googleapis-default"
- description = "Terraform-managed."
- dest_range = "2600:2d00:0002:1000::/64"
- next_hop_gateway = "default-internet-gateway"
-}
diff --git a/modules/net-vpc/variables.tf b/modules/net-vpc/variables.tf
index f5f93eff..ba9dcc40 100644
--- a/modules/net-vpc/variables.tf
+++ b/modules/net-vpc/variables.tf
@@ -23,10 +23,10 @@ variable "auto_create_subnetworks" {
variable "create_default_routes" {
description = "Toggle creation of googleapis private/restricted routes."
type = object({
- private = optional(bool, true)
- private6 = optional(bool, false)
- restricted = optional(bool, true)
- restricted6 = optional(bool, false)
+ private = optional(bool, true)
+ private-6 = optional(bool, false)
+ restricted = optional(bool, true)
+ restricted-6 = optional(bool, false)
})
default = {}
nullable = false