Merge pull request #130 from terraform-google-modules/jccb-net-vpc-optional-create
Make VPC creation optional in `net-vpc` module
This commit is contained in:
commit
1292b4c192
|
@ -4,6 +4,7 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
- Fix GCS2BQ (issue: 128)
|
- Fix GCS2BQ (issue: 128)
|
||||||
|
- make VPC creation optional in `net-vpc` module to allow managing a pre-existing VPC
|
||||||
|
|
||||||
## [3.2.0] - 2020-08-29
|
## [3.2.0] - 2020-08-29
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,7 @@ module "vpc-host" {
|
||||||
| *subnet_flow_logs* | Optional map of boolean to control flow logs (default is disabled), keyed by subnet 'region/name'. | <code title="map(bool)">map(bool)</code> | | <code title="">{}</code> |
|
| *subnet_flow_logs* | Optional map of boolean to control flow logs (default is disabled), keyed by subnet 'region/name'. | <code title="map(bool)">map(bool)</code> | | <code title="">{}</code> |
|
||||||
| *subnet_private_access* | Optional map of boolean to control private Google access (default is enabled), keyed by subnet 'region/name'. | <code title="map(bool)">map(bool)</code> | | <code title="">{}</code> |
|
| *subnet_private_access* | Optional map of boolean to control private Google access (default is enabled), keyed by subnet 'region/name'. | <code title="map(bool)">map(bool)</code> | | <code title="">{}</code> |
|
||||||
| *subnets* | The list of subnets being created | <code title="list(object({ name = string ip_cidr_range = string name = string region = string secondary_ip_range = map(string) }))">list(object({...}))</code> | | <code title="">[]</code> |
|
| *subnets* | The list of subnets being created | <code title="list(object({ name = string ip_cidr_range = string name = string region = string secondary_ip_range = map(string) }))">list(object({...}))</code> | | <code title="">[]</code> |
|
||||||
|
| *vpc_create* | Create VPC. When set to false, uses a data source to reference existing VPC. | <code title="">bool</code> | | <code title="">true</code> |
|
||||||
|
|
||||||
## Outputs
|
## Outputs
|
||||||
|
|
||||||
|
|
|
@ -66,9 +66,21 @@ locals {
|
||||||
for subnet in var.subnets :
|
for subnet in var.subnets :
|
||||||
"${subnet.region}/${subnet.name}" => subnet
|
"${subnet.region}/${subnet.name}" => subnet
|
||||||
}
|
}
|
||||||
|
network = (
|
||||||
|
var.vpc_create
|
||||||
|
? try(google_compute_network.network.0, null)
|
||||||
|
: try(data.google_compute_network.network.0, null)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
data "google_compute_network" "network" {
|
||||||
|
count = var.vpc_create ? 0 : 1
|
||||||
|
project = var.project_id
|
||||||
|
name = var.name
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "google_compute_network" "network" {
|
resource "google_compute_network" "network" {
|
||||||
|
count = var.vpc_create ? 1 : 0
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
name = var.name
|
name = var.name
|
||||||
description = var.description
|
description = var.description
|
||||||
|
@ -80,8 +92,8 @@ resource "google_compute_network" "network" {
|
||||||
resource "google_compute_network_peering" "local" {
|
resource "google_compute_network_peering" "local" {
|
||||||
provider = google-beta
|
provider = google-beta
|
||||||
count = var.peering_config == null ? 0 : 1
|
count = var.peering_config == null ? 0 : 1
|
||||||
name = "${google_compute_network.network.name}-${local.peer_network}"
|
name = "${var.name}-${local.peer_network}"
|
||||||
network = google_compute_network.network.self_link
|
network = local.network.self_link
|
||||||
peer_network = var.peering_config.peer_vpc_self_link
|
peer_network = var.peering_config.peer_vpc_self_link
|
||||||
export_custom_routes = var.peering_config.export_routes
|
export_custom_routes = var.peering_config.export_routes
|
||||||
import_custom_routes = var.peering_config.import_routes
|
import_custom_routes = var.peering_config.import_routes
|
||||||
|
@ -90,9 +102,9 @@ resource "google_compute_network_peering" "local" {
|
||||||
resource "google_compute_network_peering" "remote" {
|
resource "google_compute_network_peering" "remote" {
|
||||||
provider = google-beta
|
provider = google-beta
|
||||||
count = var.peering_config == null ? 0 : 1
|
count = var.peering_config == null ? 0 : 1
|
||||||
name = "${local.peer_network}-${google_compute_network.network.name}"
|
name = "${local.peer_network}-${var.name}"
|
||||||
network = var.peering_config.peer_vpc_self_link
|
network = var.peering_config.peer_vpc_self_link
|
||||||
peer_network = google_compute_network.network.self_link
|
peer_network = local.network.self_link
|
||||||
export_custom_routes = var.peering_config.import_routes
|
export_custom_routes = var.peering_config.import_routes
|
||||||
import_custom_routes = var.peering_config.export_routes
|
import_custom_routes = var.peering_config.export_routes
|
||||||
depends_on = [google_compute_network_peering.local]
|
depends_on = [google_compute_network_peering.local]
|
||||||
|
@ -101,7 +113,7 @@ resource "google_compute_network_peering" "remote" {
|
||||||
resource "google_compute_shared_vpc_host_project" "shared_vpc_host" {
|
resource "google_compute_shared_vpc_host_project" "shared_vpc_host" {
|
||||||
count = var.shared_vpc_host ? 1 : 0
|
count = var.shared_vpc_host ? 1 : 0
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
depends_on = [google_compute_network.network]
|
depends_on = [local.network]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "google_compute_shared_vpc_service_project" "service_projects" {
|
resource "google_compute_shared_vpc_service_project" "service_projects" {
|
||||||
|
@ -118,7 +130,7 @@ resource "google_compute_shared_vpc_service_project" "service_projects" {
|
||||||
resource "google_compute_subnetwork" "subnetwork" {
|
resource "google_compute_subnetwork" "subnetwork" {
|
||||||
for_each = local.subnets
|
for_each = local.subnets
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
network = google_compute_network.network.name
|
network = local.network.name
|
||||||
region = each.value.region
|
region = each.value.region
|
||||||
name = each.value.name
|
name = each.value.name
|
||||||
ip_cidr_range = each.value.ip_cidr_range
|
ip_cidr_range = each.value.ip_cidr_range
|
||||||
|
@ -153,7 +165,7 @@ resource "google_compute_subnetwork_iam_binding" "binding" {
|
||||||
resource "google_compute_route" "gateway" {
|
resource "google_compute_route" "gateway" {
|
||||||
for_each = local.routes_gateway
|
for_each = local.routes_gateway
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
network = google_compute_network.network.name
|
network = local.network.name
|
||||||
name = "${var.name}-${each.key}"
|
name = "${var.name}-${each.key}"
|
||||||
description = "Terraform-managed."
|
description = "Terraform-managed."
|
||||||
dest_range = each.value.dest_range
|
dest_range = each.value.dest_range
|
||||||
|
@ -165,7 +177,7 @@ resource "google_compute_route" "gateway" {
|
||||||
resource "google_compute_route" "ilb" {
|
resource "google_compute_route" "ilb" {
|
||||||
for_each = local.routes_ilb
|
for_each = local.routes_ilb
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
network = google_compute_network.network.name
|
network = local.network.name
|
||||||
name = "${var.name}-${each.key}"
|
name = "${var.name}-${each.key}"
|
||||||
description = "Terraform-managed."
|
description = "Terraform-managed."
|
||||||
dest_range = each.value.dest_range
|
dest_range = each.value.dest_range
|
||||||
|
@ -177,7 +189,7 @@ resource "google_compute_route" "ilb" {
|
||||||
resource "google_compute_route" "instance" {
|
resource "google_compute_route" "instance" {
|
||||||
for_each = local.routes_instance
|
for_each = local.routes_instance
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
network = google_compute_network.network.name
|
network = local.network.name
|
||||||
name = "${var.name}-${each.key}"
|
name = "${var.name}-${each.key}"
|
||||||
description = "Terraform-managed."
|
description = "Terraform-managed."
|
||||||
dest_range = each.value.dest_range
|
dest_range = each.value.dest_range
|
||||||
|
@ -191,7 +203,7 @@ resource "google_compute_route" "instance" {
|
||||||
resource "google_compute_route" "ip" {
|
resource "google_compute_route" "ip" {
|
||||||
for_each = local.routes_ip
|
for_each = local.routes_ip
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
network = google_compute_network.network.name
|
network = local.network.name
|
||||||
name = "${var.name}-${each.key}"
|
name = "${var.name}-${each.key}"
|
||||||
description = "Terraform-managed."
|
description = "Terraform-managed."
|
||||||
dest_range = each.value.dest_range
|
dest_range = each.value.dest_range
|
||||||
|
@ -203,7 +215,7 @@ resource "google_compute_route" "ip" {
|
||||||
resource "google_compute_route" "vpn_tunnel" {
|
resource "google_compute_route" "vpn_tunnel" {
|
||||||
for_each = local.routes_vpn_tunnel
|
for_each = local.routes_vpn_tunnel
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
network = google_compute_network.network.name
|
network = local.network.name
|
||||||
name = "${var.name}-${each.key}"
|
name = "${var.name}-${each.key}"
|
||||||
description = "Terraform-managed."
|
description = "Terraform-managed."
|
||||||
dest_range = each.value.dest_range
|
dest_range = each.value.dest_range
|
||||||
|
|
|
@ -16,17 +16,17 @@
|
||||||
|
|
||||||
output "network" {
|
output "network" {
|
||||||
description = "Network resource."
|
description = "Network resource."
|
||||||
value = google_compute_network.network
|
value = local.network
|
||||||
}
|
}
|
||||||
|
|
||||||
output "name" {
|
output "name" {
|
||||||
description = "The name of the VPC being created."
|
description = "The name of the VPC being created."
|
||||||
value = google_compute_network.network.name
|
value = local.network.name
|
||||||
}
|
}
|
||||||
|
|
||||||
output "self_link" {
|
output "self_link" {
|
||||||
description = "The URI of the VPC being created."
|
description = "The URI of the VPC being created."
|
||||||
value = google_compute_network.network.self_link
|
value = local.network.self_link
|
||||||
}
|
}
|
||||||
|
|
||||||
output "project_id" {
|
output "project_id" {
|
||||||
|
|
|
@ -143,3 +143,9 @@ variable "subnet_private_access" {
|
||||||
type = map(bool)
|
type = map(bool)
|
||||||
default = {}
|
default = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "vpc_create" {
|
||||||
|
description = "Create VPC. When set to false, uses a data source to reference existing VPC."
|
||||||
|
type = bool
|
||||||
|
default = true
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue