From 0da42decb923e9f7138e700ada187b25972c2100 Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 08:33:19 -0400 Subject: [PATCH 1/9] Added additional backup settings --- modules/cloudsql-instance/main.tf | 7 +++++++ modules/cloudsql-instance/variables.tf | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/modules/cloudsql-instance/main.tf b/modules/cloudsql-instance/main.tf index 6e7860a5..0a80ebf2 100644 --- a/modules/cloudsql-instance/main.tf +++ b/modules/cloudsql-instance/main.tf @@ -77,6 +77,13 @@ resource "google_sql_database_instance" "primary" { ? var.backup_configuration.binary_log_enabled || local.has_replicas : null ) + start_time = var.backup_configuration.start_time + location = var.backup_configuration.location + transaction_log_retention_days = var.backup_configuration.log_retention_days + backup_retention_settings { + retained_backups = var.backup_retention_settings.retained_backups + retention_unit = var.backup_retention_settings.retention_unit + } } dynamic "database_flags" { diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index 60e6045b..611890a4 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -31,10 +31,28 @@ variable "backup_configuration" { type = object({ enabled = bool binary_log_enabled = bool + start_time = string + location = string + log_retention_days = number }) default = { enabled = false binary_log_enabled = false + start_time = "23:00" + location = "EU" + log_retention_days = 7 + } +} + +variable "backup_retention_settings" { + description = "Backup retention subblock settings." + type = object({ + retained_backups = number + retention_unit = string + }) + default = { + retained_backups = 7 + retention_unit = "COUNT" } } From 0eefc8f47bc77d47e2f73c4d6da1716b9cb673c6 Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 08:46:14 -0400 Subject: [PATCH 2/9] Updated doc to include backup_retention_settings --- modules/cloudsql-instance/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/cloudsql-instance/README.md b/modules/cloudsql-instance/README.md index 341c9d00..0cd19684 100644 --- a/modules/cloudsql-instance/README.md +++ b/modules/cloudsql-instance/README.md @@ -104,7 +104,8 @@ module "db" { | tier | The machine type to use for the instances. | string | ✓ | | | *authorized_networks* | Map of NAME=>CIDR_RANGE to allow to connect to the database(s). | map(string) | | null | | *availability_type* | Availability type for the primary replica. Either `ZONAL` or `REGIONAL` | string | | ZONAL | -| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | +| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | +| *backup_retention_settings* | Backup retention subblock settings. | object({...}) | | ... | | *databases* | Databases to create once the primary instance is created. | list(string) | | null | | *deletion_protection* | Allow terraform to delete instances. | bool | | false | | *disk_size* | Disk size in GB. Set to null to enable autoresize. | number | | null | From c26d457b55fee7ecfadc11e7230c29dc579cfb2a Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 08:33:19 -0400 Subject: [PATCH 3/9] Added additional backup settings --- modules/cloudsql-instance/main.tf | 7 +++++++ modules/cloudsql-instance/variables.tf | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/modules/cloudsql-instance/main.tf b/modules/cloudsql-instance/main.tf index 6e7860a5..0a80ebf2 100644 --- a/modules/cloudsql-instance/main.tf +++ b/modules/cloudsql-instance/main.tf @@ -77,6 +77,13 @@ resource "google_sql_database_instance" "primary" { ? var.backup_configuration.binary_log_enabled || local.has_replicas : null ) + start_time = var.backup_configuration.start_time + location = var.backup_configuration.location + transaction_log_retention_days = var.backup_configuration.log_retention_days + backup_retention_settings { + retained_backups = var.backup_retention_settings.retained_backups + retention_unit = var.backup_retention_settings.retention_unit + } } dynamic "database_flags" { diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index 60e6045b..611890a4 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -31,10 +31,28 @@ variable "backup_configuration" { type = object({ enabled = bool binary_log_enabled = bool + start_time = string + location = string + log_retention_days = number }) default = { enabled = false binary_log_enabled = false + start_time = "23:00" + location = "EU" + log_retention_days = 7 + } +} + +variable "backup_retention_settings" { + description = "Backup retention subblock settings." + type = object({ + retained_backups = number + retention_unit = string + }) + default = { + retained_backups = 7 + retention_unit = "COUNT" } } From 7ea01e2c034f2a69c0688dd58be9751db1aabd6b Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 08:46:14 -0400 Subject: [PATCH 4/9] Updated doc to include backup_retention_settings --- modules/cloudsql-instance/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/cloudsql-instance/README.md b/modules/cloudsql-instance/README.md index 341c9d00..0cd19684 100644 --- a/modules/cloudsql-instance/README.md +++ b/modules/cloudsql-instance/README.md @@ -104,7 +104,8 @@ module "db" { | tier | The machine type to use for the instances. | string | ✓ | | | *authorized_networks* | Map of NAME=>CIDR_RANGE to allow to connect to the database(s). | map(string) | | null | | *availability_type* | Availability type for the primary replica. Either `ZONAL` or `REGIONAL` | string | | ZONAL | -| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | +| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | +| *backup_retention_settings* | Backup retention subblock settings. | object({...}) | | ... | | *databases* | Databases to create once the primary instance is created. | list(string) | | null | | *deletion_protection* | Allow terraform to delete instances. | bool | | false | | *disk_size* | Disk size in GB. Set to null to enable autoresize. | number | | null | From dbfb5404a4d9cbebe5a5af23abcb81e3073c46db Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 09:10:54 -0400 Subject: [PATCH 5/9] merged backup_retention_settings var --- modules/cloudsql-instance/main.tf | 4 ++-- modules/cloudsql-instance/variables.tf | 13 ++----------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/modules/cloudsql-instance/main.tf b/modules/cloudsql-instance/main.tf index 0a80ebf2..3803e9fd 100644 --- a/modules/cloudsql-instance/main.tf +++ b/modules/cloudsql-instance/main.tf @@ -81,8 +81,8 @@ resource "google_sql_database_instance" "primary" { location = var.backup_configuration.location transaction_log_retention_days = var.backup_configuration.log_retention_days backup_retention_settings { - retained_backups = var.backup_retention_settings.retained_backups - retention_unit = var.backup_retention_settings.retention_unit + retained_backups = var.backup_configuration.retention_count + retention_unit = "COUNT" } } diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index 611890a4..e71b2a9f 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -34,6 +34,7 @@ variable "backup_configuration" { start_time = string location = string log_retention_days = number + retained_count = number }) default = { enabled = false @@ -41,20 +42,10 @@ variable "backup_configuration" { start_time = "23:00" location = "EU" log_retention_days = 7 + retention_count = 7 } } -variable "backup_retention_settings" { - description = "Backup retention subblock settings." - type = object({ - retained_backups = number - retention_unit = string - }) - default = { - retained_backups = 7 - retention_unit = "COUNT" - } -} variable "database_version" { description = "Database type and version to create." From 9c9916744ac2d7c68736ec49d89f31b7d72bdc83 Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 09:12:22 -0400 Subject: [PATCH 6/9] removed backup_retention_settings var --- modules/cloudsql-instance/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/cloudsql-instance/README.md b/modules/cloudsql-instance/README.md index 0cd19684..26a02a2e 100644 --- a/modules/cloudsql-instance/README.md +++ b/modules/cloudsql-instance/README.md @@ -104,8 +104,7 @@ module "db" { | tier | The machine type to use for the instances. | string | ✓ | | | *authorized_networks* | Map of NAME=>CIDR_RANGE to allow to connect to the database(s). | map(string) | | null | | *availability_type* | Availability type for the primary replica. Either `ZONAL` or `REGIONAL` | string | | ZONAL | -| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | -| *backup_retention_settings* | Backup retention subblock settings. | object({...}) | | ... | +| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | | *databases* | Databases to create once the primary instance is created. | list(string) | | null | | *deletion_protection* | Allow terraform to delete instances. | bool | | false | | *disk_size* | Disk size in GB. Set to null to enable autoresize. | number | | null | From 64fc4fcaf699d5f9256cbf7bfa6823928aaef84a Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 10:55:37 -0400 Subject: [PATCH 7/9] Fixed variable name typo --- modules/cloudsql-instance/variables.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index e71b2a9f..094ba4e6 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -34,7 +34,7 @@ variable "backup_configuration" { start_time = string location = string log_retention_days = number - retained_count = number + retention_count = number }) default = { enabled = false From c65afde6b017c605ee6bbfeeffd4433dfefdca82 Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 11:13:53 -0400 Subject: [PATCH 8/9] Included new variables fixture test plan --- tests/modules/cloudsql_instance/fixture/variables.tf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/modules/cloudsql_instance/fixture/variables.tf b/tests/modules/cloudsql_instance/fixture/variables.tf index 3ddabc68..a3ff8e0f 100644 --- a/tests/modules/cloudsql_instance/fixture/variables.tf +++ b/tests/modules/cloudsql_instance/fixture/variables.tf @@ -28,10 +28,18 @@ variable "backup_configuration" { type = object({ enabled = bool binary_log_enabled = bool + start_time = string + location = string + log_retention_days = number + retention_count = number }) default = { enabled = false binary_log_enabled = false + start_time = "23:00" + location = "EU" + log_retention_days = 7 + retention_count = 7 } } From 4e7a34cc5bc4b2206e644bf539eed44564604281 Mon Sep 17 00:00:00 2001 From: caiotavaresdito Date: Mon, 18 Oct 2021 11:25:43 -0400 Subject: [PATCH 9/9] Fixed typo README cloudsql-instance --- modules/cloudsql-instance/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cloudsql-instance/README.md b/modules/cloudsql-instance/README.md index 26a02a2e..1c2e4364 100644 --- a/modules/cloudsql-instance/README.md +++ b/modules/cloudsql-instance/README.md @@ -104,7 +104,7 @@ module "db" { | tier | The machine type to use for the instances. | string | ✓ | | | *authorized_networks* | Map of NAME=>CIDR_RANGE to allow to connect to the database(s). | map(string) | | null | | *availability_type* | Availability type for the primary replica. Either `ZONAL` or `REGIONAL` | string | | ZONAL | -| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | +| *backup_configuration* | Backup settings for primary instance. Will be automatically enabled if using MySQL with one or more replicas | object({...}) | | ... | | *databases* | Databases to create once the primary instance is created. | list(string) | | null | | *deletion_protection* | Allow terraform to delete instances. | bool | | false | | *disk_size* | Disk size in GB. Set to null to enable autoresize. | number | | null |