blob: 402e36314724b4fb5323251f1071f9d4983e04f4 [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: "AlloyDB"
description: |-
An AlloyDB Backup.
---
# google_alloydb_backup
An AlloyDB Backup.
To get more information about Backup, see:
* [API documentation](https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations.backups/create)
* How-to Guides
* [AlloyDB](https://cloud.google.com/alloydb/docs/)
## Example Usage - Alloydb Backup Basic
```hcl
resource "google_alloydb_backup" "default" {
location = "us-central1"
backup_id = "alloydb-backup"
cluster_name = google_alloydb_cluster.default.name
depends_on = [google_alloydb_instance.default]
}
resource "google_alloydb_cluster" "default" {
cluster_id = "alloydb-cluster"
location = "us-central1"
network_config {
network = google_compute_network.default.id
}
}
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
depends_on = [google_service_networking_connection.vpc_connection]
}
resource "google_compute_global_address" "private_ip_alloc" {
name = "alloydb-cluster"
address_type = "INTERNAL"
purpose = "VPC_PEERING"
prefix_length = 16
network = google_compute_network.default.id
}
resource "google_service_networking_connection" "vpc_connection" {
network = google_compute_network.default.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}
resource "google_compute_network" "default" {
name = "alloydb-network"
}
```
## Example Usage - Alloydb Backup Full
```hcl
resource "google_alloydb_backup" "default" {
location = "us-central1"
backup_id = "alloydb-backup"
cluster_name = google_alloydb_cluster.default.name
description = "example description"
type = "ON_DEMAND"
labels = {
"label" = "key"
}
depends_on = [google_alloydb_instance.default]
}
resource "google_alloydb_cluster" "default" {
cluster_id = "alloydb-cluster"
location = "us-central1"
network_config {
network = google_compute_network.default.id
}
}
resource "google_alloydb_instance" "default" {
cluster = google_alloydb_cluster.default.name
instance_id = "alloydb-instance"
instance_type = "PRIMARY"
depends_on = [google_service_networking_connection.vpc_connection]
}
resource "google_compute_global_address" "private_ip_alloc" {
name = "alloydb-cluster"
address_type = "INTERNAL"
purpose = "VPC_PEERING"
prefix_length = 16
network = google_compute_network.default.id
}
resource "google_service_networking_connection" "vpc_connection" {
network = google_compute_network.default.id
service = "servicenetworking.googleapis.com"
reserved_peering_ranges = [google_compute_global_address.private_ip_alloc.name]
}
resource "google_compute_network" "default" {
name = "alloydb-network"
}
```
## Argument Reference
The following arguments are supported:
* `cluster_name` -
(Required)
The full resource name of the backup source cluster (e.g., projects/{project}/locations/{location}/clusters/{clusterId}).
* `backup_id` -
(Required)
The ID of the alloydb backup.
* `location` -
(Required)
The location where the alloydb backup should reside.
- - -
* `display_name` -
(Optional)
User-settable and human-readable display name for the Backup.
* `labels` -
(Optional)
User-defined labels for the alloydb backup. An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
**Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
Please refer to the field `effective_labels` for all of the labels present on the resource.
* `type` -
(Optional)
The backup type, which suggests the trigger for the backup.
Possible values are: `TYPE_UNSPECIFIED`, `ON_DEMAND`, `AUTOMATED`, `CONTINUOUS`.
* `description` -
(Optional)
User-provided description of the backup.
* `encryption_config` -
(Optional)
EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).
Structure is [documented below](#nested_encryption_config).
* `annotations` -
(Optional)
Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128
An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
Please refer to the field `effective_annotations` for all of the annotations present on the resource.
* `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_encryption_config"></a>The `encryption_config` block supports:
* `kms_key_name` -
(Optional)
The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].
## 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}}/locations/{{location}}/backups/{{backup_id}}`
* `name` -
Output only. The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backupId}
* `uid` -
Output only. The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.
* `create_time` -
Output only. Create time stamp. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
* `update_time` -
Output only. Update time stamp. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
* `delete_time` -
Output only. Delete time stamp. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
* `state` -
Output only. The current state of the backup.
* `cluster_uid` -
Output only. The system-generated UID of the cluster which was used to create this resource.
* `reconciling` -
Output only. Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource.
This can happen due to user-triggered updates or system actions like failover or maintenance.
* `encryption_info` -
EncryptionInfo describes the encryption information of a cluster or a backup.
Structure is [documented below](#nested_encryption_info).
* `etag` -
For Resource freshness validation (https://google.aip.dev/154)
* `size_bytes` -
Output only. The size of the backup in bytes.
* `expiry_time` -
Output only. The time at which after the backup is eligible to be garbage collected.
It is the duration specified by the backup's retention policy, added to the backup's createTime.
* `expiry_quantity` -
Output only. The QuantityBasedExpiry of the backup, specified by the backup's retention policy.
Once the expiry quantity is over retention, the backup is eligible to be garbage collected.
Structure is [documented below](#nested_expiry_quantity).
* `terraform_labels` -
The combination of labels configured directly on the resource
and default labels configured on the provider.
* `effective_labels` -
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
* `effective_annotations` -
All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services.
<a name="nested_encryption_info"></a>The `encryption_info` block contains:
* `encryption_type` -
(Output)
Output only. Type of encryption.
* `kms_key_versions` -
(Output)
Output only. Cloud KMS key versions that are being used to protect the database or the backup.
<a name="nested_expiry_quantity"></a>The `expiry_quantity` block contains:
* `retention_count` -
(Output)
Output only. The backup's position among its backups with the same source cluster and type, by descending chronological order create time (i.e. newest first).
* `total_retention_count` -
(Output)
Output only. The length of the quantity-based queue, specified by the backup's retention policy.
## Timeouts
This resource provides the following
[Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options:
- `create` - Default is 10 minutes.
- `update` - Default is 10 minutes.
- `delete` - Default is 10 minutes.
## Import
Backup can be imported using any of these accepted formats:
* `projects/{{project}}/locations/{{location}}/backups/{{backup_id}}`
* `{{project}}/{{location}}/{{backup_id}}`
* `{{location}}/{{backup_id}}`
In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import Backup using one of the formats above. For example:
```tf
import {
id = "projects/{{project}}/locations/{{location}}/backups/{{backup_id}}"
to = google_alloydb_backup.default
}
```
When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), Backup can be imported using one of the formats above. For example:
```
$ terraform import google_alloydb_backup.default projects/{{project}}/locations/{{location}}/backups/{{backup_id}}
$ terraform import google_alloydb_backup.default {{project}}/{{location}}/{{backup_id}}
$ terraform import google_alloydb_backup.default {{location}}/{{backup_id}}
```
## User Project Overrides
This resource supports [User Project Overrides](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override).