diff --git a/blueprints/third-party-solutions/phpipam/cloudsql.tf b/blueprints/third-party-solutions/phpipam/cloudsql.tf
index 538a0a57..391151c7 100644
--- a/blueprints/third-party-solutions/phpipam/cloudsql.tf
+++ b/blueprints/third-party-solutions/phpipam/cloudsql.tf
@@ -1,5 +1,5 @@
/**
- * Copyright 2023 Google LLC
+ * Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,12 +16,13 @@
# Set up CloudSQL
module "cloudsql" {
- source = "../../../modules/cloudsql-instance"
- project_id = module.project.project_id
- name = "${var.prefix}-mysql"
- database_version = local.cloudsql_conf.database_version
- deletion_protection = var.deletion_protection
- databases = [local.cloudsql_conf.db]
+ source = "../../../modules/cloudsql-instance"
+ project_id = module.project.project_id
+ name = "${var.prefix}-mysql"
+ database_version = local.cloudsql_conf.database_version
+ terraform_deletion_protection = var.deletion_protection
+ gcp_deletion_protection = var.deletion_protection
+ databases = [local.cloudsql_conf.db]
network_config = {
connectivity = {
psa_config = {
diff --git a/blueprints/third-party-solutions/wordpress/cloudrun/cloudsql.tf b/blueprints/third-party-solutions/wordpress/cloudrun/cloudsql.tf
index 3daa12da..e6546cee 100644
--- a/blueprints/third-party-solutions/wordpress/cloudrun/cloudsql.tf
+++ b/blueprints/third-party-solutions/wordpress/cloudrun/cloudsql.tf
@@ -1,5 +1,5 @@
/**
- * Copyright 2023 Google LLC
+ * Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -71,5 +71,6 @@ module "cloudsql" {
password = var.cloudsql_password
}
}
- deletion_protection = false
+ terraform_deletion_protection = false
+ gcp_deletion_protection = false
}
diff --git a/modules/cloudsql-instance/README.md b/modules/cloudsql-instance/README.md
index ef58bee3..8c6920f4 100644
--- a/modules/cloudsql-instance/README.md
+++ b/modules/cloudsql-instance/README.md
@@ -298,10 +298,10 @@ module "db" {
| name | description | type | required | default |
|---|---|:---:|:---:|:---:|
| [database_version](variables.tf#L68) | Database type and version to create. | string
| ✓ | |
-| [name](variables.tf#L179) | Name of primary instance. | string
| ✓ | |
-| [network_config](variables.tf#L184) | Network configuration for the instance. Only one between private_network and psc_config can be used. | object({…})
| ✓ | |
-| [project_id](variables.tf#L217) | The ID of the project where this instances will be created. | string
| ✓ | |
-| [region](variables.tf#L222) | Region of the primary instance. | string
| ✓ | |
+| [name](variables.tf#L172) | Name of primary instance. | string
| ✓ | |
+| [network_config](variables.tf#L177) | Network configuration for the instance. Only one between private_network and psc_config can be used. | object({…})
| ✓ | |
+| [project_id](variables.tf#L210) | The ID of the project where this instances will be created. | string
| ✓ | |
+| [region](variables.tf#L215) | Region of the primary instance. | string
| ✓ | |
| [tier](variables.tf#L258) | The machine type to use for the instances. | string
| ✓ | |
| [activation_policy](variables.tf#L16) | This variable specifies when the instance should be active. Can be either ALWAYS, NEVER or ON_DEMAND. Default is ALWAYS. | string
| | "ALWAYS"
|
| [availability_type](variables.tf#L27) | Availability type for the primary replica. Either `ZONAL` or `REGIONAL`. | string
| | "ZONAL"
|
@@ -309,21 +309,21 @@ module "db" {
| [collation](variables.tf#L56) | The name of server instance collation. | string
| | null
|
| [connector_enforcement](variables.tf#L62) | Specifies if connections must use Cloud SQL connectors. | string
| | null
|
| [databases](variables.tf#L73) | Databases to create once the primary instance is created. | list(string)
| | null
|
-| [deletion_protection](variables.tf#L79) | Prevent terraform from deleting instances. | bool
| | true
|
-| [deletion_protection_enabled](variables.tf#L86) | Set Google's deletion protection attribute which applies across all surfaces (UI, API, & Terraform). | bool
| | true
|
-| [disk_autoresize_limit](variables.tf#L93) | The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit. | number
| | 0
|
-| [disk_size](variables.tf#L99) | Disk size in GB. Set to null to enable autoresize. | number
| | null
|
-| [disk_type](variables.tf#L105) | The type of data disk: `PD_SSD` or `PD_HDD`. | string
| | "PD_SSD"
|
-| [edition](variables.tf#L111) | The edition of the instance, can be ENTERPRISE or ENTERPRISE_PLUS. | string
| | "ENTERPRISE"
|
-| [encryption_key_name](variables.tf#L117) | The full path to the encryption key used for the CMEK disk encryption of the primary instance. | string
| | null
|
-| [flags](variables.tf#L123) | Map FLAG_NAME=>VALUE for database-specific tuning. | map(string)
| | null
|
-| [insights_config](variables.tf#L129) | Query Insights configuration. Defaults to null which disables Query Insights. | object({…})
| | null
|
-| [labels](variables.tf#L140) | Labels to be attached to all instances. | map(string)
| | null
|
-| [maintenance_config](variables.tf#L146) | Set maintenance window configuration and maintenance deny period (up to 90 days). Date format: 'yyyy-mm-dd'. | object({…})
| | {}
|
-| [prefix](variables.tf#L207) | Optional prefix used to generate instance names. | string
| | null
|
-| [replicas](variables.tf#L227) | Map of NAME=> {REGION, KMS_KEY} for additional read replicas. Set to null to disable replica creation. | map(object({…}))
| | {}
|
-| [root_password](variables.tf#L236) | Root password of the Cloud SQL instance. Required for MS SQL Server. | string
| | null
|
-| [ssl](variables.tf#L242) | Setting to enable SSL, set config and certificates. | object({…})
| | {}
|
+| [disk_autoresize_limit](variables.tf#L79) | The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit. | number
| | 0
|
+| [disk_size](variables.tf#L85) | Disk size in GB. Set to null to enable autoresize. | number
| | null
|
+| [disk_type](variables.tf#L91) | The type of data disk: `PD_SSD` or `PD_HDD`. | string
| | "PD_SSD"
|
+| [edition](variables.tf#L97) | The edition of the instance, can be ENTERPRISE or ENTERPRISE_PLUS. | string
| | "ENTERPRISE"
|
+| [encryption_key_name](variables.tf#L103) | The full path to the encryption key used for the CMEK disk encryption of the primary instance. | string
| | null
|
+| [flags](variables.tf#L109) | Map FLAG_NAME=>VALUE for database-specific tuning. | map(string)
| | null
|
+| [gcp_deletion_protection](variables.tf#L115) | Set Google's deletion protection attribute which applies across all surfaces (UI, API, & Terraform). | bool
| | true
|
+| [insights_config](variables.tf#L122) | Query Insights configuration. Defaults to null which disables Query Insights. | object({…})
| | null
|
+| [labels](variables.tf#L133) | Labels to be attached to all instances. | map(string)
| | null
|
+| [maintenance_config](variables.tf#L139) | Set maintenance window configuration and maintenance deny period (up to 90 days). Date format: 'yyyy-mm-dd'. | object({…})
| | {}
|
+| [prefix](variables.tf#L200) | Optional prefix used to generate instance names. | string
| | null
|
+| [replicas](variables.tf#L220) | Map of NAME=> {REGION, KMS_KEY} for additional read replicas. Set to null to disable replica creation. | map(object({…}))
| | {}
|
+| [root_password](variables.tf#L229) | Root password of the Cloud SQL instance. Required for MS SQL Server. | string
| | null
|
+| [ssl](variables.tf#L235) | Setting to enable SSL, set config and certificates. | object({…})
| | {}
|
+| [terraform_deletion_protection](variables.tf#L251) | Prevent terraform from deleting instances. | bool
| | true
|
| [time_zone](variables.tf#L263) | The time_zone to be used by the database engine (supported only for SQL Server), in SQL Server timezone format. | string
| | null
|
| [users](variables.tf#L269) | Map of users to create in the primary instance (and replicated to other replicas). For MySQL, anything after the first `@` (if present) will be used as the user's host. Set PASSWORD to null if you want to get an autogenerated password. The user types available are: 'BUILT_IN', 'CLOUD_IAM_USER' or 'CLOUD_IAM_SERVICE_ACCOUNT'. | map(object({…}))
| | null
|
diff --git a/modules/cloudsql-instance/main.tf b/modules/cloudsql-instance/main.tf
index de8c486c..7fa08a71 100644
--- a/modules/cloudsql-instance/main.tf
+++ b/modules/cloudsql-instance/main.tf
@@ -1,5 +1,5 @@
/** TO MOD
- * Copyright 2022 Google LLC
+ * Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -56,7 +56,7 @@ resource "google_sql_database_instance" "primary" {
settings {
tier = var.tier
edition = var.edition
- deletion_protection_enabled = var.deletion_protection_enabled
+ deletion_protection_enabled = var.gcp_deletion_protection
disk_autoresize = var.disk_size == null
disk_autoresize_limit = var.disk_autoresize_limit
disk_size = var.disk_size
@@ -152,7 +152,7 @@ resource "google_sql_database_instance" "primary" {
}
}
}
- deletion_protection = var.deletion_protection
+ deletion_protection = var.terraform_deletion_protection
}
resource "google_sql_database_instance" "replicas" {
@@ -167,7 +167,7 @@ resource "google_sql_database_instance" "replicas" {
settings {
tier = var.tier
- deletion_protection_enabled = var.deletion_protection_enabled
+ deletion_protection_enabled = var.gcp_deletion_protection
disk_autoresize = var.disk_size == null
disk_size = var.disk_size
disk_type = var.disk_type
@@ -205,7 +205,7 @@ resource "google_sql_database_instance" "replicas" {
}
}
}
- deletion_protection = var.deletion_protection
+ deletion_protection = var.terraform_deletion_protection
}
resource "google_sql_database" "databases" {
diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf
index 7a8f240a..41fd2d22 100644
--- a/modules/cloudsql-instance/variables.tf
+++ b/modules/cloudsql-instance/variables.tf
@@ -1,5 +1,5 @@
/**
- * Copyright 2023 Google LLC
+ * Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -76,20 +76,6 @@ variable "databases" {
default = null
}
-variable "deletion_protection" {
- description = "Prevent terraform from deleting instances."
- type = bool
- default = true
- nullable = false
-}
-
-variable "deletion_protection_enabled" {
- description = "Set Google's deletion protection attribute which applies across all surfaces (UI, API, & Terraform)."
- type = bool
- default = true
- nullable = false
-}
-
variable "disk_autoresize_limit" {
description = "The maximum size to which storage capacity can be automatically increased. The default value is 0, which specifies that there is no limit."
type = number
@@ -126,6 +112,13 @@ variable "flags" {
default = null
}
+variable "gcp_deletion_protection" {
+ description = "Set Google's deletion protection attribute which applies across all surfaces (UI, API, & Terraform)."
+ type = bool
+ default = true
+ nullable = false
+}
+
variable "insights_config" {
description = "Query Insights configuration. Defaults to null which disables Query Insights."
type = object({
@@ -255,6 +248,13 @@ variable "ssl" {
}
}
+variable "terraform_deletion_protection" {
+ description = "Prevent terraform from deleting instances."
+ type = bool
+ default = true
+ nullable = false
+}
+
variable "tier" {
description = "The machine type to use for the instances."
type = string