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