This module handles Google Cloud Platform AlloyDB cluster creation and configuration with Automated Backup Policy, Primary node instance and Read Node Pools. The resource/resources that this module will create are:
- Creates an AlloyDB Cluster with/without automated backup policy
- Creates a Primary Instance
- Creates a pool of Read Instances
- Usage of this module for creating a AlloyDB Cluster with a scheduled automated backup policy
module "alloy-db" {
source = "../.."
cluster_id = "alloydb-cluster"
cluster_location = "us-central1"
project_id = <"PROJECT_ID">
cluster_labels = {}
cluster_display_name = ""
cluster_initial_user = {
user = "<USER_NAME>",
password = "<PASSWORD>"
}
network_self_link = "projects/${project_id}/global/networks/${network_name}"
automated_backup_policy = {
location = "us-central1"
backup_window = "1800s",
enabled = true,
weekly_schedule = {
days_of_week = ["FRIDAY"],
start_times = ["2:00:00:00", ]
}
quantity_based_retention_count = 1,
time_based_retention_count = null,
labels = {
test = "alloydb-cluster"
},
}
primary_instance = null
read_pool_instance = null
depends_on = [google_compute_network.default, google_compute_global_address.private_ip_alloc, google_service_networking_connection.vpc_connection]
}
- Usage of this module for creating a AlloyDB Cluster with a primary instance
module "alloy-db" {
source = "../.."
project_id = <PROJECT_ID>
cluster_id = "alloydb-cluster-with-primary-instance"
cluster_location = "us-central1"
cluster_labels = {}
cluster_display_name = ""
cluster_initial_user = {
user = "<USER_NAME>",
password = "<PASSWORD>"
}
network_self_link = "projects/${project_id}/global/networks/${network_name}"
automated_backup_policy = null
primary_instance = {
instance_id = "primary-instance",
instance_type = "PRIMARY",
machine_cpu_count = 2,
database_flags = {},
display_name = "alloydb-primary-instance"
}
read_pool_instance = null
depends_on = [google_compute_network.default, google_compute_global_address.private_ip_alloc, google_service_networking_connection.vpc_connection]
}
Functional examples are included in the examples directory.
Name | Description | Type | Default | Required |
---|---|---|---|---|
automated_backup_policy | The automated backup policy for this cluster. | object({ |
{ |
no |
cluster_display_name | Display Name for Alloy DB Cluster | string |
"" |
no |
cluster_id | Configuration of the AlloyDb cluster. | string |
n/a | yes |
cluster_initial_user | Alloy DB Cluster Initial User Credentials | object({ |
{ |
no |
cluster_labels | Labels to identify the Alloy DB Cluster | map(string) |
{} |
no |
cluster_location | Location where AlloyDb cluster will be deployed. | string |
"us-central1" |
no |
network_self_link | Network ID where the AlloyDb cluster will be deployed. | string |
n/a | yes |
primary_instance | Primary cluster configuration that supports read and write operations. | object({ |
n/a | yes |
project_id | The ID of the project in which to provision resources. | string |
n/a | yes |
read_pool_instance | List of Read Pool Instances to be created | list(object({ |
[] |
no |
Name | Description |
---|---|
cluster_id | ID of the Alloy DB Cluster created |
primary_instance_id | ID of the primary instance created |
read_instance_ids | IDs of the read instances created |
These sections describe requirements for using this module.
The following dependencies must be available:
- Terraform v0.13
- Terraform Provider for GCP plugin v3.0
A service account with the following roles must be used to provision the resources of this module:
- Storage Admin:
roles/alloydb.admin
The Project Factory module and the IAM module may be used in combination to provision a service account with the necessary roles applied.
A project with the following APIs enabled must be used to host the resources of this module:
alloydb.googleapis.com
The Project Factory module can be used to provision a project with the necessary APIs enabled.
Refer to the contribution guidelines for information on contributing to this module.
Please see our security disclosure process.