{"id":24233741,"url":"https://github.com/memes/terraform-google-multi-region-private-network","last_synced_at":"2026-06-08T19:02:09.297Z","repository":{"id":143023127,"uuid":"600602141","full_name":"memes/terraform-google-multi-region-private-network","owner":"memes","description":"Terraform module to create a private global VPC network with subnets in the specified regions, with each subnet receiving a CIDR of specified size.","archived":false,"fork":false,"pushed_at":"2025-01-24T23:25:48.000Z","size":184,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-25T00:22:19.636Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/memes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-12T01:41:08.000Z","updated_at":"2025-01-24T23:25:38.000Z","dependencies_parsed_at":"2023-04-19T17:00:36.521Z","dependency_job_id":"9c22d0da-b2ac-4414-be24-c12487f95fd4","html_url":"https://github.com/memes/terraform-google-multi-region-private-network","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":"memes/repo-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-multi-region-private-network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-multi-region-private-network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-multi-region-private-network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-multi-region-private-network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memes","download_url":"https://codeload.github.com/memes/terraform-google-multi-region-private-network/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241854020,"owners_count":20031345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-14T16:01:40.855Z","updated_at":"2026-06-08T19:02:09.284Z","avatar_url":"https://github.com/memes.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-region VPC network module\n\n![GitHub release](https://img.shields.io/github/v/release/memes/terraform-google-multi-region-private-network?sort=semver)\n![Maintenance](https://img.shields.io/maintenance/yes/2025)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\nThis Terraform module creates an opinionated private global VPC network that spans\nthe regions provided, with each subnet receiving a calculated CIDR of requested\nsize from the network CIDR.\n\nThe default configuration will create a VPC network with the following properties:\n\n* For each region, a `/24` subnet from `172.16.0.0/12`, with no secondary ranges\n* Private by default\n  * Default route to internet (0.0.0.0/0) is deleted\n  * Private Google API access is enabled to support VPC Service Controls\n  * Private connectivity route is added to support VPC Service Controls\n    \u003e NOTE: Private Cloud DNS zones and bastions are not managed by this module;\n    \u003e see [restricted-apis-dns] and [private-bastion] for those.\n\nOptionally, a Cloud NAT gateway can be added to each region to allow for controlled\negress traffic, and IPv6 ULA addressing enabled.\n\n## Opinions\n\n1. The network should be defined as a CIDR; the module will allocate sub-CIDRs to\n   regions as needed.\n2. The network will be **private** by default\n3. Module consumers can override CIDRs, and option flags, but must explicitly set\n   all the `cidrs` and/or `options` fields. Nothing is inferred by omission.\n4. Firewall rules, additional routes, and other per-application settings should\n   not be managed by this module.\n\n\u003e NOTE: The intent of this module is to easily repeat common VPC network patterns\n\u003e I use to deploy in Google Cloud; it is not a general purpose VPC network creation\n\u003e tool. Use Google's [network] module for that purpose.\n\n## Examples\n\n### Dual region (us-west1 and us-east1) private VPC network\n\n|Item|Enabled/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR||Not enabled|\n|Secondary IPv4 CIDRs||None added|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|Private API route||None added|\n|MTU|\u0026check;|1460|\n|Cloud NAT|||\n|*Restricted Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\n\u003c!-- Example tested in tests/test_dual_region.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    name       = \"internal-us\"\n    regions    = [\"us-west1\", \"us-east1\"]\n}\n```\n\n### Dual region (us-west1 and us-east1) private VPC network, with primary subnet offset and steps\n\n|Item|Enabled/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (as `172.16.10.0/16`, `172.16.20.0/16`)|\n|Primary IPv6 CIDR||Not enabled|\n|Secondary IPv4 CIDRs||None added|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|Private API route||None added|\n|MTU|\u0026check;|1460|\n|Cloud NAT|||\n|*Restricted Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\n\u003c!-- Example tested in tests/test_primary_offset_step.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    name       = \"internal-us\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    cidrs      = {\n        primary_ipv4_subnet_offset = 10\n        primary_ipv4_subnet_step   = 10\n    }\n}\n```\n\n### Dual region (us-west1 and us-east1) with secondary ranges for GKE\n\n\u003c!-- markdownlint-disable MD013 MD033 MD034--\u003e\n|Item|Enabled/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR||Not enabled|\n|Secondary IPv4 CIDRs|\u0026check;|\u0026bullet; `pods` CIDR `10.x.0.0/16` per region\u003cbr/\u003e\u0026bullet; `services` CIDR `10.100.x.0/24` per region|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|Private API route||None added|\n|MTU|\u0026check;|1460|\n|Cloud NAT||Not enabled|\n|*Restricted Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\u003c!-- markdownlint-enable MD013 MD033 MD034--\u003e\n\n\u003c!-- Example tested in tests/test_gke.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    cidrs      = {\n        secondaries = {\n            pods = {\n                ipv4_cidr        = \"10.0.0.0/8\"\n                ipv4_subnet_size = 16\n            }\n            services = {\n                ipv4_cidr = \"10.100.0.0/16\"\n            }\n        }\n    }\n}\n```\n\n### Dual region (us-west1 and us-east1) with Cloud NAT\n\n\u003c!-- markdownlint-disable MD033 MD034--\u003e\n|Item|Managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR||Not enabled|\n|Secondary IPv4 CIDRs||None added|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Not deleted - Cloud NAT requires a default internet route be in place|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|Private API route||None added|\n|MTU|\u0026check;|1460|\n|Cloud NAT|\u0026check;|A Cloud Router and Cloud NAT will be created in each region|\n|*Restricted Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\u003c!-- markdownlint-enable MD033 MD034--\u003e\n\n\u003c!-- Example tested in tests/test_tagged_nat.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    nat = {\n        tags = [\"allow-nat\"]\n    }\n}\n```\n\n### Dual region (us-west1 and us-east1) with auto-allocated IPv6 CIDR\n\n\u003c!-- markdownlint-disable MD033 MD034--\u003e\n|Item|Enable/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR|\u0026check;|Auto-allocated `/48` from `fd20::/20` (`/64` per region)|\n|Secondary IPv4 CIDRs||None added|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|Private API route||None added|\n|MTU|\u0026check;|1460|\n|Cloud NAT||Not enabled|\n|*Restricted Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\u003c!-- markdownlint-enable MD033 MD034--\u003e\n\n\u003c!-- Example tested in tests/test_ipv6_ula.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    options    = {\n        ipv6_ula = true\n    }\n}\n```\n\n### Dual region (us-west1 and us-east1) with explicit IPv6 CIDR\n\n\u003c!-- markdownlint-disable MD033 MD034--\u003e\n|Item|Enable/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR|\u0026check;|`fd20:0:0309:0:0:0:0:0/48` (`/64` per region)|\n|Secondary IPv4 CIDRs||None added|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|MTU|\u0026check;|1460|\n|Cloud NAT||Not enabled|\n|*Restricted Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\u003c!-- markdownlint-enable MD033 MD034--\u003e\n\n\u003c!-- Example tested in tests/test_ipv6_ula_manual.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    cidrs      = {\n        primary_ipv6_cidr = \"fd20:0:0309:0:0:0:0:0/48\"\n    }\n    options    = {\n        ipv6_ula = true\n    }\n}\n```\n\n### Dual region (us-west1 and us-east1) with Private Google APIs access\n\n\u003c!-- markdownlint-disable MD033 MD034--\u003e\n|Item|Enabled/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR||Not enabled|\n|Secondary IPv4 CIDRs||Not enabled|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route||None added|\n|Private API route|\u0026check;|A route for private Google API endpoints is added|\n|MTU|\u0026check;|1460|\n|Cloud NAT||Not enabled|\n|*Private Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\u003c!-- markdownlint-enable MD033 MD034--\u003e\n\n\u003c!-- Example tested in tests/test_disable_restricted_apis.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    options = {\n        enable_restricted_apis_access = false\n    }\n}\n```\n\n### Dual region (us-west1 and us-east1) with Restricted Google APIs access via PSC\n\n\u003c!-- markdownlint-disable MD033 MD034--\u003e\n|Item|Enabled/managed by module|Description|\n|----|-----------------|-----------|\n|Regions|\u0026check;|`us-west1` and `us-east1`|\n|Primary IPv4 CIDR|\u0026check;|`172.16.0.0/12` (`/24` per region)|\n|Primary IPv6 CIDR||Not enabled|\n|Secondary IPv4 CIDRs||Not enabled|\n|VPC routing mode|\u0026check;|GLOBAL|\n|Default internet route|\u0026check;|Deleted; VPC will not route to internet|\n|Restricted API route|\u0026check;|A route for restricted Google API endpoints is added|\n|Private API route|\u0026check;|A route for private Google API endpoints is added|\n|MTU|\u0026check;|1460|\n|Cloud NAT||Not enabled|\n|PSC||`10.10.10.10`|\n|*Restricted and Private Google API DNS zone(s)*||*Not managed by this module; see [restricted-apis-dns]*|\n|*Bastion*||*Not managed by this module; see [private-bastion]*|\n\u003c!-- markdownlint-enable MD033 MD034--\u003e\n\n\u003c!-- Example tested in tests/test_psc.py --\u003e\n```hcl\nmodule \"vpc\" {\n    source     = \"memes/multi-region-private-network/google\"\n    version    = \"5.0.0\"\n    project_id = \"my-project-id\"\n    regions    = [\"us-west1\", \"us-east1\"]\n    psc        = {\n        address = \"10.10.10.10\"\n    }\n}\n```\n\n\u003c!-- markdownlint-disable MD033 MD034 MD060 --\u003e\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.5 |\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | \u003e= 7.1 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_regions\"\u003e\u003c/a\u003e [regions](#module\\_regions) | memes/region-detail/google | 1.1.7 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [google_compute_global_address.psc](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_address) | resource |\n| [google_compute_global_forwarding_rule.psc](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_forwarding_rule) | resource |\n| [google_compute_network.network](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_network) | resource |\n| [google_compute_route.apis](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_route) | resource |\n| [google_compute_route.tagged_nat](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_route) | resource |\n| [google_compute_router.nat](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_router) | resource |\n| [google_compute_router_nat.nat](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_router_nat) | resource |\n| [google_compute_subnetwork.subnet](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_subnetwork) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_project_id\"\u003e\u003c/a\u003e [project\\_id](#input\\_project\\_id) | The GCP project identifier where the VPC network will be created. | `string` | n/a | yes |\n| \u003ca name=\"input_regions\"\u003e\u003c/a\u003e [regions](#input\\_regions) | The list of Compute Engine regions in which to create the VPC subnetworks. | `list(string)` | n/a | yes |\n| \u003ca name=\"input_cidrs\"\u003e\u003c/a\u003e [cidrs](#input\\_cidrs) | Sets the primary IPv4 CIDR and regional subnet size to use with the network, an optional IPv6 ULA CIDR to use with the\u003cbr/\u003enetwork, and any optional secondary IPv4 CIDRs and sizes. | \u003cpre\u003eobject({\u003cbr/\u003e    primary_ipv4_cidr          = optional(string, \"172.16.0.0/12\")\u003cbr/\u003e    primary_ipv4_subnet_size   = optional(number, 24)\u003cbr/\u003e    primary_ipv4_subnet_offset = optional(number, 0)\u003cbr/\u003e    primary_ipv4_subnet_step   = optional(number, 1)\u003cbr/\u003e    primary_ipv6_cidr          = optional(string, null)\u003cbr/\u003e    secondaries = optional(map(object({\u003cbr/\u003e      ipv4_cidr          = string\u003cbr/\u003e      ipv4_subnet_size   = optional(number, 24)\u003cbr/\u003e      ipv4_subnet_offset = optional(number, 0)\u003cbr/\u003e      ipv4_subnet_step   = optional(number, 1)\u003cbr/\u003e    })), null)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"primary_ipv4_cidr\": \"172.16.0.0/12\",\u003cbr/\u003e  \"primary_ipv4_subnet_offset\": 0,\u003cbr/\u003e  \"primary_ipv4_subnet_size\": 24,\u003cbr/\u003e  \"primary_ipv4_subnet_step\": 1,\u003cbr/\u003e  \"primary_ipv6_cidr\": null,\u003cbr/\u003e  \"secondaries\": null\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_description\"\u003e\u003c/a\u003e [description](#input\\_description) | A descriptive value to apply to the VPC network. Default value is 'custom vpc'. | `string` | `\"custom vpc\"` | no |\n| \u003ca name=\"input_flow_logs\"\u003e\u003c/a\u003e [flow\\_logs](#input\\_flow\\_logs) | If not null, enable flow log collection in Cloud Logging using the provided parameters. If null (default), flow log\u003cbr/\u003ecollection will be disabled. | \u003cpre\u003eobject({\u003cbr/\u003e    aggregation_interval = optional(string, \"INTERVAL_5_SEC\")\u003cbr/\u003e    flow_sampling        = optional(number, 0.5)\u003cbr/\u003e    metadata             = optional(string, \"INCLUDE_ALL_METADATA\")\u003cbr/\u003e    metadata_fields      = optional(set(string), [])\u003cbr/\u003e    filter_expr          = optional(string, \"true\")\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_labels\"\u003e\u003c/a\u003e [labels](#input\\_labels) | An optional map of key:value labels to apply to the resources. Default value is an empty map. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | The name to use when naming resources managed by this module. Must be RFC1035 compliant and between 1 and 55 characters\u003cbr/\u003ein length, inclusive. | `string` | `\"restricted\"` | no |\n| \u003ca name=\"input_nat\"\u003e\u003c/a\u003e [nat](#input\\_nat) | If not null, Cloud NAT instances and supporting Cloud Routers will be added to each subnet along with supporting\u003cbr/\u003eroutes with tags, if applicable. Log collection is controlled by the presence of a non empty logging\\_filter field. | \u003cpre\u003eobject({\u003cbr/\u003e    tags           = optional(set(string), [])\u003cbr/\u003e    logging_filter = optional(string, null)\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_options\"\u003e\u003c/a\u003e [options](#input\\_options) | The set of options to use when creating the VPC network. The default value will create a VPC network with MTU of 1460,\u003cbr/\u003eGLOBAL routing mode, and IPv6 ULA disabled. Default routes (0.0.0.0/0, ::0) to the default gateway are deleted; routes\u003cbr/\u003ewill be added to support Restricted (default) or Private Google APIs access unless PSC for Google APIs is enabled\u003cbr/\u003ethrough the `psc` variable. | \u003cpre\u003eobject({\u003cbr/\u003e    mtu                           = optional(number, 1460)\u003cbr/\u003e    delete_default_routes         = optional(bool, true)\u003cbr/\u003e    enable_restricted_apis_access = optional(bool, true)\u003cbr/\u003e    regional_routing_mode         = optional(bool, false)\u003cbr/\u003e    ipv6_ula                      = optional(bool, false)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"delete_default_routes\": true,\u003cbr/\u003e  \"enable_restricted_apis_access\": true,\u003cbr/\u003e  \"ipv6_ula\": false,\u003cbr/\u003e  \"mtu\": 1460,\u003cbr/\u003e  \"regional_routing_mode\": false\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_psc\"\u003e\u003c/a\u003e [psc](#input\\_psc) | If set, create a Private Service Connect for Google APIs resource to provide Private or Restricted Google APIs access\u003cbr/\u003evia a PSC in the VPC. If a valid service\\_directory field is present automatic DNS registration via Service Directory\u003cbr/\u003ewill be activated. The value of `options.enable_restricted_apis_access` determines if the PSC will be to Restricted\u003cbr/\u003e(default) or Private Google APIs bundle. | \u003cpre\u003eobject({\u003cbr/\u003e    address = string\u003cbr/\u003e    service_directory = optional(object({\u003cbr/\u003e      namespace = string\u003cbr/\u003e      region    = string\u003cbr/\u003e    }), null)\u003cbr/\u003e    name        = optional(string)\u003cbr/\u003e    description = optional(string)\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_id\"\u003e\u003c/a\u003e [id](#output\\_id) | The qualified id of the created VPC network. |\n| \u003ca name=\"output_self_link\"\u003e\u003c/a\u003e [self\\_link](#output\\_self\\_link) | The fully-qualified self-link URI of the created VPC network. |\n| \u003ca name=\"output_subnets_by_name\"\u003e\u003c/a\u003e [subnets\\_by\\_name](#output\\_subnets\\_by\\_name) | A map of subnet name to region, self\\_link, and CIDRs. |\n| \u003ca name=\"output_subnets_by_region\"\u003e\u003c/a\u003e [subnets\\_by\\_region](#output\\_subnets\\_by\\_region) | A map of subnet region to name, self\\_link, and CIDRs. |\n\u003c!-- END_TF_DOCS --\u003e\n\u003c!-- markdownlint-enable MD033 MD034 MD060 --\u003e\n\n[network]: https://registry.terraform.io/modules/terraform-google-modules/network/google/latest?tab=readme\n[restricted-apis-dns]: https://registry.terraform.io/modules/memes/restricted-apis-dns/google/latest?tab=readme\n[private-bastion]: https://registry.terraform.io/modules/memes/private-bastion/google/latest?tab=readme\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemes%2Fterraform-google-multi-region-private-network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemes%2Fterraform-google-multi-region-private-network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemes%2Fterraform-google-multi-region-private-network/lists"}