blob: b5d755cb8261dd1417145b247ddec3d5c7e40d96 [file] [log] [blame]
---
subcategory: "Compute Engine"
description: |-
BGP information that must be configured into the routing stack to
establish BGP peering.
---
# google\_compute\_router\_peer
BGP information that must be configured into the routing stack to
establish BGP peering. This information must specify the peer ASN
and either the interface name, IP address, or peer IP address.
Please refer to RFC4273.
To get more information about RouterBgpPeer, see:
* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)
* How-to Guides
* [Google Cloud Router](https://cloud.google.com/router/docs/)
## Example Usage - Router Peer Basic
```hcl
resource "google_compute_router_peer" "peer" {
name = "my-router-peer"
router = "my-router"
region = "us-central1"
peer_asn = 65513
advertised_route_priority = 100
interface = "interface-1"
}
```
## Example Usage - Router Peer Disabled
```hcl
resource "google_compute_router_peer" "peer" {
name = "my-router-peer"
router = "my-router"
region = "us-central1"
peer_ip_address = "169.254.1.2"
peer_asn = 65513
advertised_route_priority = 100
interface = "interface-1"
enable = false
}
```
## Example Usage - Router Peer Bfd
```hcl
resource "google_compute_router_peer" "peer" {
name = "my-router-peer"
router = "my-router"
region = "us-central1"
peer_ip_address = "169.254.1.2"
peer_asn = 65513
advertised_route_priority = 100
interface = "interface-1"
bfd {
min_receive_interval = 1000
min_transmit_interval = 1000
multiplier = 5
session_initialization_mode = "ACTIVE"
}
}
```
<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=router_peer_router_appliance&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 - Router Peer Router Appliance
```hcl
resource "google_compute_network" "network" {
name = "my-router-net"
auto_create_subnetworks = false
}
resource "google_compute_subnetwork" "subnetwork" {
name = "my-router-sub"
network = google_compute_network.network.self_link
ip_cidr_range = "10.0.0.0/16"
region = "us-central1"
}
resource "google_compute_address" "addr_intf" {
name = "my-router-addr-intf"
region = google_compute_subnetwork.subnetwork.region
subnetwork = google_compute_subnetwork.subnetwork.id
address_type = "INTERNAL"
}
resource "google_compute_address" "addr_intf_redundant" {
name = "my-router-addr-intf-red"
region = google_compute_subnetwork.subnetwork.region
subnetwork = google_compute_subnetwork.subnetwork.id
address_type = "INTERNAL"
}
resource "google_compute_address" "addr_peer" {
name = "my-router-addr-peer"
region = google_compute_subnetwork.subnetwork.region
subnetwork = google_compute_subnetwork.subnetwork.id
address_type = "INTERNAL"
}
resource "google_compute_instance" "instance" {
name = "router-appliance"
zone = "us-central1-a"
machine_type = "e2-medium"
can_ip_forward = true
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network_ip = google_compute_address.addr_peer.address
subnetwork = google_compute_subnetwork.subnetwork.self_link
}
}
resource "google_network_connectivity_hub" "hub" {
name = "my-router-hub"
}
resource "google_network_connectivity_spoke" "spoke" {
name = "my-router-spoke"
location = google_compute_subnetwork.subnetwork.region
hub = google_network_connectivity_hub.hub.id
linked_router_appliance_instances {
instances {
virtual_machine = google_compute_instance.instance.self_link
ip_address = google_compute_address.addr_peer.address
}
site_to_site_data_transfer = false
}
}
resource "google_compute_router" "router" {
name = "my-router-router"
region = google_compute_subnetwork.subnetwork.region
network = google_compute_network.network.self_link
bgp {
asn = 64514
}
}
resource "google_compute_router_interface" "interface_redundant" {
name = "my-router-intf-red"
region = google_compute_router.router.region
router = google_compute_router.router.name
subnetwork = google_compute_subnetwork.subnetwork.self_link
private_ip_address = google_compute_address.addr_intf_redundant.address
}
resource "google_compute_router_interface" "interface" {
name = "my-router-intf"
region = google_compute_router.router.region
router = google_compute_router.router.name
subnetwork = google_compute_subnetwork.subnetwork.self_link
private_ip_address = google_compute_address.addr_intf.address
redundant_interface = google_compute_router_interface.interface_redundant.name
}
resource "google_compute_router_peer" "peer" {
name = "my-router-peer"
router = google_compute_router.router.name
region = google_compute_router.router.region
interface = google_compute_router_interface.interface.name
router_appliance_instance = google_compute_instance.instance.self_link
peer_asn = 65513
peer_ip_address = google_compute_address.addr_peer.address
}
```
## Argument Reference
The following arguments are supported:
* `name` -
(Required)
Name of this BGP peer. 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.
* `interface` -
(Required)
Name of the interface the BGP peer is associated with.
* `peer_asn` -
(Required)
Peer BGP Autonomous System Number (ASN).
Each BGP interface may use a different value.
* `router` -
(Required)
The name of the Cloud Router in which this BgpPeer will be configured.
- - -
* `ip_address` -
(Optional)
IP address of the interface inside Google Cloud Platform.
Only IPv4 is supported.
* `peer_ip_address` -
(Optional)
IP address of the BGP interface outside Google Cloud Platform.
Only IPv4 is supported. Required if `ip_address` is set.
* `advertised_route_priority` -
(Optional)
The priority of routes advertised to this BGP peer.
Where there is more than one matching route of maximum
length, the routes with the lowest priority value win.
* `advertise_mode` -
(Optional)
User-specified flag to indicate which mode to use for advertisement.
Valid values of this enum field are: `DEFAULT`, `CUSTOM`
Default value is `DEFAULT`.
Possible values are: `DEFAULT`, `CUSTOM`.
* `advertised_groups` -
(Optional)
User-specified list of prefix groups to advertise in custom
mode, which currently supports the following option:
* `ALL_SUBNETS`: Advertises all of the router's own VPC subnets.
This excludes any routes learned for subnets that use VPC Network
Peering.
Note that this field can only be populated if advertiseMode is `CUSTOM`
and overrides the list defined for the router (in the "bgp" message).
These groups are advertised in addition to any specified prefixes.
Leave this field blank to advertise no custom groups.
* `advertised_ip_ranges` -
(Optional)
User-specified list of individual IP ranges to advertise in
custom mode. This field can only be populated if advertiseMode
is `CUSTOM` and is advertised to all peers of the router. These IP
ranges will be advertised in addition to any specified groups.
Leave this field blank to advertise no custom IP ranges.
Structure is [documented below](#nested_advertised_ip_ranges).
* `bfd` -
(Optional)
BFD configuration for the BGP peering.
Structure is [documented below](#nested_bfd).
* `enable` -
(Optional)
The status of the BGP peer connection. If set to false, any active session
with the peer is terminated and all associated routing information is removed.
If set to true, the peer connection can be established with routing information.
The default is true.
* `router_appliance_instance` -
(Optional)
The URI of the VM instance that is used as third-party router appliances
such as Next Gen Firewalls, Virtual Routers, or Router Appliances.
The VM instance must be located in zones contained in the same region as
this Cloud Router. The VM instance is the peer side of the BGP session.
* `enable_ipv6` -
(Optional)
Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default.
* `ipv6_nexthop_address` -
(Optional)
IPv6 address of the interface inside Google Cloud Platform.
The address must be in the range 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64.
If you do not specify the next hop addresses, Google Cloud automatically
assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
* `peer_ipv6_nexthop_address` -
(Optional)
IPv6 address of the BGP interface outside Google Cloud Platform.
The address must be in the range 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64.
If you do not specify the next hop addresses, Google Cloud automatically
assigns unused addresses from the 2600:2d00:0:2::/64 or 2600:2d00:0:3::/64 range for you.
* `region` -
(Optional)
Region where the router and BgpPeer reside.
If it is not provided, the provider region is used.
* `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_advertised_ip_ranges"></a>The `advertised_ip_ranges` block supports:
* `range` -
(Required)
The IP range to advertise. The value must be a
CIDR-formatted string.
* `description` -
(Optional)
User-specified description for the IP range.
<a name="nested_bfd"></a>The `bfd` block supports:
* `session_initialization_mode` -
(Required)
The BFD session initialization mode for this BGP peer.
If set to `ACTIVE`, the Cloud Router will initiate the BFD session
for this BGP peer. If set to `PASSIVE`, the Cloud Router will wait
for the peer router to initiate the BFD session for this BGP peer.
If set to `DISABLED`, BFD is disabled for this BGP peer.
Possible values are: `ACTIVE`, `DISABLED`, `PASSIVE`.
* `min_transmit_interval` -
(Optional)
The minimum interval, in milliseconds, between BFD control packets
transmitted to the peer router. The actual value is negotiated
between the two routers and is equal to the greater of this value
and the corresponding receive interval of the other router. If set,
this value must be between 1000 and 30000.
* `min_receive_interval` -
(Optional)
The minimum interval, in milliseconds, between BFD control packets
received from the peer router. The actual value is negotiated
between the two routers and is equal to the greater of this value
and the transmit interval of the other router. If set, this value
must be between 1000 and 30000.
* `multiplier` -
(Optional)
The number of consecutive BFD packets that must be missed before
BFD declares that a peer is unavailable. If set, the value must
be a value between 5 and 16.
## 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}}/routers/{{router}}/{{name}}`
* `management_type` -
The resource that configures and manages this BGP peer.
* `MANAGED_BY_USER` is the default value and can be managed by
you or other users
* `MANAGED_BY_ATTACHMENT` is a BGP peer that is configured and
managed by Cloud Interconnect, specifically by an
InterconnectAttachment of type PARTNER. Google automatically
creates, updates, and deletes this type of BGP peer when the
PARTNER InterconnectAttachment is created, updated,
or deleted.
## 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.
- `update` - Default is 20 minutes.
- `delete` - Default is 20 minutes.
## Import
RouterBgpPeer can be imported using any of these accepted formats:
* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`
* `{{project}}/{{region}}/{{router}}/{{name}}`
* `{{region}}/{{router}}/{{name}}`
* `{{router}}/{{name}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import RouterBgpPeer using one of the formats above. For example:
```tf
import {
id = "projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}"
to = google_compute_router_peer.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), RouterBgpPeer can be imported using one of the formats above. For example:
```
$ terraform import google_compute_router_peer.default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}
$ terraform import google_compute_router_peer.default {{project}}/{{region}}/{{router}}/{{name}}
$ terraform import google_compute_router_peer.default {{region}}/{{router}}/{{name}}
$ terraform import google_compute_router_peer.default {{router}}/{{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).