diff --git a/lib/aws/services/mongodb/main.j2.tf b/lib/aws/services/mongodb/main.j2.tf index 5072dfd4..2750d683 100644 --- a/lib/aws/services/mongodb/main.j2.tf +++ b/lib/aws/services/mongodb/main.j2.tf @@ -117,5 +117,5 @@ resource "aws_docdb_cluster" "documentdb_cluster" { # Backups backup_retention_period = var.backup_retention_period preferred_backup_window = var.preferred_backup_window - skip_final_snapshot = true + skip_final_snapshot = var.delete_automated_backups } diff --git a/lib/aws/services/mongodb/variables.j2.tf b/lib/aws/services/mongodb/variables.j2.tf index 2495970c..532c4f49 100644 --- a/lib/aws/services/mongodb/variables.j2.tf +++ b/lib/aws/services/mongodb/variables.j2.tf @@ -114,6 +114,12 @@ variable "preferred_backup_window" { type = string } +variable "skip_final_snapshot" { + description = "Skip final snapshot" + default = {{ skip_final_snapshot }} + type = bool +} + {%- if snapshot is defined %} # Snapshots variable "snapshot_identifier" { diff --git a/lib/aws/services/mysql/main.j2.tf b/lib/aws/services/mysql/main.j2.tf index 03cbda07..2f0ddd01 100644 --- a/lib/aws/services/mysql/main.j2.tf +++ b/lib/aws/services/mysql/main.j2.tf @@ -113,7 +113,7 @@ resource "aws_db_instance" "mysql_instance" { # Backups backup_retention_period = var.backup_retention_period backup_window = var.backup_window - skip_final_snapshot = true + skip_final_snapshot = var.delete_automated_backups delete_automated_backups = var.delete_automated_backups } diff --git a/lib/aws/services/mysql/variables.j2.tf b/lib/aws/services/mysql/variables.j2.tf index ad2a7417..2cc69fdf 100644 --- a/lib/aws/services/mysql/variables.j2.tf +++ b/lib/aws/services/mysql/variables.j2.tf @@ -152,6 +152,12 @@ variable "delete_automated_backups" { type = bool } +variable "skip_final_snapshot" { + description = "Skip final snapshot" + default = {{ skip_final_snapshot }} + type = bool +} + {%- if snapshot is defined %} # Snapshots variable "snapshot_identifier" { diff --git a/lib/aws/services/postgresql/main.j2.tf b/lib/aws/services/postgresql/main.j2.tf index 86830926..2a2a8aff 100644 --- a/lib/aws/services/postgresql/main.j2.tf +++ b/lib/aws/services/postgresql/main.j2.tf @@ -115,7 +115,7 @@ resource "aws_db_instance" "postgresql_instance" { # Backups backup_retention_period = var.backup_retention_period backup_window = var.backup_window - skip_final_snapshot = true + skip_final_snapshot = var.delete_automated_backups delete_automated_backups = var.delete_automated_backups } diff --git a/lib/aws/services/postgresql/variables.j2.tf b/lib/aws/services/postgresql/variables.j2.tf index 4b63d348..b018905c 100644 --- a/lib/aws/services/postgresql/variables.j2.tf +++ b/lib/aws/services/postgresql/variables.j2.tf @@ -166,6 +166,12 @@ variable "delete_automated_backups" { type = bool } +variable "skip_final_snapshot" { + description = "Skip final snapshot" + default = {{ skip_final_snapshot }} + type = bool +} + # Snapshots # TODO later #variable "snapshot_identifier" { diff --git a/lib/aws/services/redis/main.j2.tf b/lib/aws/services/redis/main.j2.tf index f8b64569..4d02ea11 100644 --- a/lib/aws/services/redis/main.j2.tf +++ b/lib/aws/services/redis/main.j2.tf @@ -106,5 +106,8 @@ resource "aws_elasticache_cluster" "elasticache_cluster" { # Backups snapshot_window = var.preferred_backup_window snapshot_retention_limit = var.backup_retention_period + {%- if skip_final_snapshot %} + final_snapshot_identifier = "${var.elasticache_identifier}-final" + {%- endif %} } diff --git a/src/cloud_provider/aws/databases/mongodb.rs b/src/cloud_provider/aws/databases/mongodb.rs index 6dd00565..fdcfc551 100644 --- a/src/cloud_provider/aws/databases/mongodb.rs +++ b/src/cloud_provider/aws/databases/mongodb.rs @@ -183,6 +183,7 @@ impl Service for MongoDB { context.insert("tfstate_suffix_name", &get_tfstate_suffix(self)); context.insert("tfstate_name", &get_tfstate_name(self)); + context.insert("skip_final_snapshot", &self.context().is_test_cluster()); if self.context.resource_expiration_in_seconds().is_some() { context.insert( "resource_expiration_in_seconds", diff --git a/src/cloud_provider/aws/databases/mysql.rs b/src/cloud_provider/aws/databases/mysql.rs index b7e6898f..658d22e9 100644 --- a/src/cloud_provider/aws/databases/mysql.rs +++ b/src/cloud_provider/aws/databases/mysql.rs @@ -180,6 +180,7 @@ impl Service for MySQL { context.insert("tfstate_name", &get_tfstate_name(self)); context.insert("delete_automated_backups", &self.context().is_test_cluster()); + context.insert("skip_final_snapshot", &self.context().is_test_cluster()); if self.context.resource_expiration_in_seconds().is_some() { context.insert( "resource_expiration_in_seconds", diff --git a/src/cloud_provider/aws/databases/postgresql.rs b/src/cloud_provider/aws/databases/postgresql.rs index 5c81ff4d..40a837af 100644 --- a/src/cloud_provider/aws/databases/postgresql.rs +++ b/src/cloud_provider/aws/databases/postgresql.rs @@ -180,6 +180,7 @@ impl Service for PostgreSQL { context.insert("tfstate_suffix_name", &get_tfstate_suffix(self)); context.insert("tfstate_name", &get_tfstate_name(self)); + context.insert("skip_final_snapshot", &self.context().is_test_cluster()); context.insert("delete_automated_backups", &self.context().is_test_cluster()); if self.context.resource_expiration_in_seconds().is_some() { diff --git a/src/cloud_provider/aws/databases/redis.rs b/src/cloud_provider/aws/databases/redis.rs index 074d3e2c..cff3c6ca 100644 --- a/src/cloud_provider/aws/databases/redis.rs +++ b/src/cloud_provider/aws/databases/redis.rs @@ -194,6 +194,7 @@ impl Service for Redis { context.insert("tfstate_suffix_name", &get_tfstate_suffix(self)); context.insert("tfstate_name", &get_tfstate_name(self)); + context.insert("skip_final_snapshot", &self.context().is_test_cluster()); if self.context.resource_expiration_in_seconds().is_some() { context.insert( "resource_expiration_in_seconds",