Merge pull request #132 from terraform-google-modules/vpn-ha-optional-gateway
Make VPN Gateway creation optional for the net-vpn-ha module
This commit is contained in:
@@ -136,7 +136,7 @@ module "vpn_ha" {
|
||||
|
||||
| name | description | type | required | default |
|
||||
|---|---|:---: |:---:|:---:|
|
||||
| name | VPN gateway name, and prefix used for dependent resources. | <code title="">string</code> | ✓ | |
|
||||
| name | VPN Gateway name (if an existing VPN Gateway is not used), and prefix used for dependent resources. | <code title="">string</code> | ✓ | |
|
||||
| network | VPC used for the gateway and routes. | <code title="">string</code> | ✓ | |
|
||||
| project_id | Project where resources will be created. | <code title="">string</code> | ✓ | |
|
||||
| region | Region used for resources. | <code title="">string</code> | ✓ | |
|
||||
@@ -146,16 +146,18 @@ module "vpn_ha" {
|
||||
| *router_advertise_config* | Router custom advertisement configuration, ip_ranges is a map of address ranges and descriptions. | <code title="object({ groups = list(string) ip_ranges = map(string) mode = string })">object({...})</code> | | <code title="">null</code> |
|
||||
| *router_asn* | Router ASN used for auto-created router. | <code title="">number</code> | | <code title="">64514</code> |
|
||||
| *router_create* | Create router. | <code title="">bool</code> | | <code title="">true</code> |
|
||||
| *router_name* | Router name used for auto created router, or to specify existing router to use. Leave blank to use VPN name for auto created router. | <code title="">string</code> | | <code title=""></code> |
|
||||
| *router_name* | Router name used for auto created router, or to specify an existing router to use if `router_create` is set to `true`. Leave blank to use VPN name for auto created router. | <code title="">string</code> | | <code title=""></code> |
|
||||
| *tunnels* | VPN tunnel configurations, bgp_peer_options is usually null. | <code title="map(object({ bgp_peer = object({ address = string asn = number }) bgp_peer_options = object({ advertise_groups = list(string) advertise_ip_ranges = map(string) advertise_mode = string route_priority = number }) bgp_session_range = string ike_version = number vpn_gateway_interface = number peer_external_gateway_interface = number shared_secret = string }))">map(object({...}))</code> | | <code title="">{}</code> |
|
||||
| *vpn_gateway* | HA VPN Gateway Self Link for using an existing HA VPN Gateway, leave empty if `vpn_gateway_create` is set to `true`. | <code title="">string</code> | | <code title="">null</code> |
|
||||
| *vpn_gateway_create* | Create HA VPN Gateway. | <code title="">bool</code> | | <code title="">true</code> |
|
||||
|
||||
## Outputs
|
||||
|
||||
| name | description | sensitive |
|
||||
|---|---|:---:|
|
||||
| external_gateway | External VPN gateway resource. | |
|
||||
| gateway | HA VPN gateway resource. | |
|
||||
| name | VPN gateway name. | |
|
||||
| gateway | VPN gateway resource (only if auto-created). | |
|
||||
| name | VPN gateway name (only if auto-created). | |
|
||||
| random_secret | Generated secret. | ✓ |
|
||||
| router | Router resource (only if auto-created). | |
|
||||
| router_name | Router name. | |
|
||||
|
||||
@@ -27,11 +27,17 @@ locals {
|
||||
? try(google_compute_router.router[0].name, null)
|
||||
: var.router_name
|
||||
)
|
||||
vpn_gateway = (
|
||||
var.vpn_gateway_create
|
||||
? try(google_compute_ha_vpn_gateway.ha_gateway[0].self_link, null)
|
||||
: var.vpn_gateway
|
||||
)
|
||||
secret = random_id.secret.b64_url
|
||||
}
|
||||
|
||||
resource "google_compute_ha_vpn_gateway" "ha_gateway" {
|
||||
provider = google-beta
|
||||
count = var.vpn_gateway_create ? 1 : 0
|
||||
name = var.name
|
||||
project = var.project_id
|
||||
region = var.region
|
||||
@@ -55,12 +61,11 @@ resource "google_compute_external_vpn_gateway" "external_gateway" {
|
||||
}
|
||||
|
||||
resource "google_compute_router" "router" {
|
||||
provider = google-beta
|
||||
count = var.router_create ? 1 : 0
|
||||
name = var.router_name == "" ? "vpn-${var.name}" : var.router_name
|
||||
project = var.project_id
|
||||
region = var.region
|
||||
network = var.network
|
||||
count = var.router_create ? 1 : 0
|
||||
name = var.router_name == "" ? "vpn-${var.name}" : var.router_name
|
||||
project = var.project_id
|
||||
region = var.region
|
||||
network = var.network
|
||||
bgp {
|
||||
advertise_mode = (
|
||||
var.router_advertise_config == null
|
||||
@@ -135,7 +140,6 @@ resource "google_compute_router_peer" "bgp_peer" {
|
||||
}
|
||||
|
||||
resource "google_compute_router_interface" "router_interface" {
|
||||
provider = google-beta
|
||||
for_each = var.tunnels
|
||||
project = var.project_id
|
||||
region = var.region
|
||||
@@ -162,7 +166,7 @@ resource "google_compute_vpn_tunnel" "tunnels" {
|
||||
? local.secret
|
||||
: each.value.shared_secret
|
||||
)
|
||||
vpn_gateway = google_compute_ha_vpn_gateway.ha_gateway.self_link
|
||||
vpn_gateway = local.vpn_gateway
|
||||
}
|
||||
|
||||
resource "random_id" "secret" {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/**
|
||||
* Copyright 2019 Google LLC
|
||||
*
|
||||
@@ -16,8 +15,12 @@
|
||||
*/
|
||||
|
||||
output "gateway" {
|
||||
description = "HA VPN gateway resource."
|
||||
value = google_compute_ha_vpn_gateway.ha_gateway
|
||||
description = "VPN gateway resource (only if auto-created)."
|
||||
value = (
|
||||
var.vpn_gateway_create
|
||||
? google_compute_ha_vpn_gateway.ha_gateway[0]
|
||||
: null
|
||||
)
|
||||
}
|
||||
|
||||
output "external_gateway" {
|
||||
@@ -30,13 +33,21 @@ output "external_gateway" {
|
||||
}
|
||||
|
||||
output "name" {
|
||||
description = "VPN gateway name."
|
||||
value = google_compute_ha_vpn_gateway.ha_gateway.name
|
||||
description = "VPN gateway name (only if auto-created). "
|
||||
value = (
|
||||
var.vpn_gateway_create
|
||||
? google_compute_ha_vpn_gateway.ha_gateway[0].name
|
||||
: null
|
||||
)
|
||||
}
|
||||
|
||||
output "router" {
|
||||
description = "Router resource (only if auto-created)."
|
||||
value = var.router_name == "" ? google_compute_router.router[0] : null
|
||||
value = (
|
||||
var.router_name == ""
|
||||
? google_compute_router.router[0]
|
||||
: null
|
||||
)
|
||||
}
|
||||
|
||||
output "router_name" {
|
||||
@@ -46,7 +57,7 @@ output "router_name" {
|
||||
|
||||
output "self_link" {
|
||||
description = "HA VPN gateway self link."
|
||||
value = google_compute_ha_vpn_gateway.ha_gateway.self_link
|
||||
value = local.vpn_gateway
|
||||
}
|
||||
|
||||
output "tunnels" {
|
||||
|
||||
@@ -15,10 +15,22 @@
|
||||
*/
|
||||
|
||||
variable "name" {
|
||||
description = "VPN gateway name, and prefix used for dependent resources."
|
||||
description = "VPN Gateway name (if an existing VPN Gateway is not used), and prefix used for dependent resources."
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vpn_gateway_create" {
|
||||
description = "Create HA VPN Gateway."
|
||||
type = bool
|
||||
default = true
|
||||
}
|
||||
|
||||
variable "vpn_gateway" {
|
||||
description = "HA VPN Gateway Self Link for using an existing HA VPN Gateway, leave empty if `vpn_gateway_create` is set to `true`."
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "network" {
|
||||
description = "VPC used for the gateway and routes."
|
||||
type = string
|
||||
@@ -81,7 +93,7 @@ variable "router_create" {
|
||||
}
|
||||
|
||||
variable "router_name" {
|
||||
description = "Router name used for auto created router, or to specify existing router to use. Leave blank to use VPN name for auto created router."
|
||||
description = "Router name used for auto created router, or to specify an existing router to use if `router_create` is set to `true`. Leave blank to use VPN name for auto created router."
|
||||
type = string
|
||||
default = ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user