blob: 69d0a9b51c3224691299a63d4d37f9ce822043d1 [file] [log] [blame] [edit]
---
# ----------------------------------------------------------------------------
#
# *** AUTO GENERATED CODE *** Type: MMv1 ***
#
# ----------------------------------------------------------------------------
#
# This file is automatically generated by Magic Modules and manual
# changes will be clobbered when the file is regenerated.
#
# Please read more about how to change this file in
# .github/CONTRIBUTING.md.
#
# ----------------------------------------------------------------------------
subcategory: "Compute Engine"
description: |-
Represents a VPN gateway running in GCP.
---
# google\_compute\_ha\_vpn\_gateway
Represents a VPN gateway running in GCP. This virtual device is managed
by Google, but used only by you. This type of VPN Gateway allows for the creation
of VPN solutions with higher availability than classic Target VPN Gateways.
To get more information about HaVpnGateway, see:
* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/vpnGateways)
* How-to Guides
* [Choosing a VPN](https://cloud.google.com/vpn/docs/how-to/choosing-a-vpn)
* [Cloud VPN Overview](https://cloud.google.com/vpn/docs/concepts/overview)
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=ha_vpn_gateway_basic&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Ha Vpn Gateway Basic
```hcl
resource "google_compute_ha_vpn_gateway" "ha_gateway1" {
region = "us-central1"
name = "ha-vpn-1"
network = google_compute_network.network1.id
}
resource "google_compute_network" "network1" {
name = "network1"
auto_create_subnetworks = false
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=ha_vpn_gateway_ipv6&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Ha Vpn Gateway Ipv6
```hcl
resource "google_compute_ha_vpn_gateway" "ha_gateway1" {
region = "us-central1"
name = "ha-vpn-1"
network = google_compute_network.network1.id
stack_type = "IPV4_IPV6"
}
resource "google_compute_network" "network1" {
name = "network1"
auto_create_subnetworks = false
}
```
## Example Usage - Compute Ha Vpn Gateway Encrypted Interconnect
```hcl
resource "google_compute_ha_vpn_gateway" "vpn-gateway" {
name = "test-ha-vpngw"
network = google_compute_network.network.id
vpn_interfaces {
id = 0
interconnect_attachment = google_compute_interconnect_attachment.attachment1.self_link
}
vpn_interfaces {
id = 1
interconnect_attachment = google_compute_interconnect_attachment.attachment2.self_link
}
}
resource "google_compute_interconnect_attachment" "attachment1" {
name = "test-interconnect-attachment1"
edge_availability_domain = "AVAILABILITY_DOMAIN_1"
type = "PARTNER"
router = google_compute_router.router.id
encryption = "IPSEC"
ipsec_internal_addresses = [
google_compute_address.address1.self_link,
]
}
resource "google_compute_interconnect_attachment" "attachment2" {
name = "test-interconnect-attachment2"
edge_availability_domain = "AVAILABILITY_DOMAIN_2"
type = "PARTNER"
router = google_compute_router.router.id
encryption = "IPSEC"
ipsec_internal_addresses = [
google_compute_address.address2.self_link,
]
}
resource "google_compute_address" "address1" {
name = "test-address1"
address_type = "INTERNAL"
purpose = "IPSEC_INTERCONNECT"
address = "192.168.1.0"
prefix_length = 29
network = google_compute_network.network.self_link
}
resource "google_compute_address" "address2" {
name = "test-address2"
address_type = "INTERNAL"
purpose = "IPSEC_INTERCONNECT"
address = "192.168.2.0"
prefix_length = 29
network = google_compute_network.network.self_link
}
resource "google_compute_router" "router" {
name = "test-router"
network = google_compute_network.network.name
encrypted_interconnect_router = true
bgp {
asn = 16550
}
}
resource "google_compute_network" "network" {
name = "test-network"
auto_create_subnetworks = false
}
```
## Argument Reference
The following arguments are supported:
* `name` -
(Required)
Name of the resource. Provided by the client when the resource is
created. The name must be 1-63 characters long, and comply with
RFC1035. Specifically, the name must be 1-63 characters long and
match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
the first character must be a lowercase letter, and all following
characters must be a dash, lowercase letter, or digit, except the last
character, which cannot be a dash.
* `network` -
(Required)
The network this VPN gateway is accepting traffic for.
- - -
* `description` -
(Optional)
An optional description of this resource.
* `stack_type` -
(Optional)
The stack type for this VPN gateway to identify the IP protocols that are enabled.
If not specified, IPV4_ONLY will be used.
Default value is `IPV4_ONLY`.
Possible values are: `IPV4_ONLY`, `IPV4_IPV6`.
* `vpn_interfaces` -
(Optional)
A list of interfaces on this VPN gateway.
Structure is [documented below](#nested_vpn_interfaces).
* `region` -
(Optional)
The region this gateway should sit in.
* `project` - (Optional) The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.
<a name="nested_vpn_interfaces"></a>The `vpn_interfaces` block supports:
* `id` -
(Optional)
The numeric ID of this VPN gateway interface.
* `ip_address` -
(Output)
The external IP address for this VPN gateway interface.
* `interconnect_attachment` -
(Optional)
URL of the interconnect attachment resource. When the value
of this field is present, the VPN Gateway will be used for
IPsec-encrypted Cloud Interconnect; all Egress or Ingress
traffic for this VPN Gateway interface will go through the
specified interconnect attachment resource.
Not currently available publicly.
## Attributes Reference
In addition to the arguments listed above, the following computed attributes are exported:
* `id` - an identifier for the resource with format `projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}`
* `self_link` - The URI of the created resource.
## Timeouts
This resource provides the following
[Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options:
- `create` - Default is 20 minutes.
- `delete` - Default is 20 minutes.
## Import
HaVpnGateway can be imported using any of these accepted formats:
* `projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}`
* `{{project}}/{{region}}/{{name}}`
* `{{region}}/{{name}}`
* `{{name}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import HaVpnGateway using one of the formats above. For example:
```tf
import {
id = "projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}"
to = google_compute_ha_vpn_gateway.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), HaVpnGateway can be imported using one of the formats above. For example:
```
$ terraform import google_compute_ha_vpn_gateway.default projects/{{project}}/regions/{{region}}/vpnGateways/{{name}}
$ terraform import google_compute_ha_vpn_gateway.default {{project}}/{{region}}/{{name}}
$ terraform import google_compute_ha_vpn_gateway.default {{region}}/{{name}}
$ terraform import google_compute_ha_vpn_gateway.default {{name}}
```
## User Project Overrides
This resource supports [User Project Overrides](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override).