Skip to content

Commit 0a8eba6

Browse files
committed
DTOSS-10668: Amend postgresql-flexible Terraform module to parameterise prevent_destroy lifecycle
1 parent afea9cb commit 0a8eba6

5 files changed

Lines changed: 26 additions & 3 deletions

File tree

infrastructure/environments/review/variables.tfvars

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ postgres_geo_redundant_backup_enabled = false
77
protect_keyvault = false
88
vnet_address_space = "10.142.0.0/16"
99
personas_enabled = true
10+
postgres_prevent_destroy = false

infrastructure/modules/container-apps/postgres.tf

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ data "azurerm_private_dns_zone" "postgres" {
55
resource_group_name = "rg-hub-${var.hub}-uks-private-dns-zones"
66
}
77

8+
resource "azurerm_management_lock" "postgres_lock" {
9+
count = var.postgres_prevent_destroy ? 1 : 0
10+
11+
name = "lock-${module.postgres.database_names[0]}"
12+
scope = module.postgres.id
13+
lock_level = "CanNotDelete"
14+
notes = "Lock applied to prevent accidental deletion of Postgres server."
15+
}
16+
817
module "postgres" {
918
source = "../dtos-devops-templates/infrastructure/modules/postgresql-flexible"
1019

@@ -26,9 +35,9 @@ module "postgres" {
2635
monitor_diagnostic_setting_postgresql_server_enabled_logs = ["PostgreSQLLogs", "PostgreSQLFlexSessions", "PostgreSQLFlexQueryStoreRuntime", "PostgreSQLFlexQueryStoreWaitStats", "PostgreSQLFlexTableStats", "PostgreSQLFlexDatabaseXacts"]
2736
monitor_diagnostic_setting_postgresql_server_metrics = ["AllMetrics"]
2837

29-
sku_name = var.postgres_sku_name
30-
storage_mb = var.postgres_storage_mb
31-
storage_tier = var.postgres_storage_tier
38+
sku_name = var.postgres_sku_name
39+
storage_mb = var.postgres_storage_mb
40+
storage_tier = var.postgres_storage_tier
3241

3342
server_version = "16"
3443
tenant_id = data.azurerm_client_config.current.tenant_id

infrastructure/modules/container-apps/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ variable "postgres_backup_retention_days" {
7272
type = number
7373
}
7474

75+
variable "postgres_prevent_destroy" {
76+
type = bool
77+
default = true
78+
description = "If true, prevents the PostgreSQL flexible server from being destroyed."
79+
}
80+
7581
variable "postgres_geo_redundant_backup_enabled" {
7682
description = "Whether geo-redundant backup is enabled for the PostgreSQL Flexible Server."
7783
type = bool

infrastructure/terraform/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ module "container-apps" {
5151
log_analytics_workspace_audit_id = var.deploy_infra ? module.infra[0].log_analytics_workspace_audit_id : data.azurerm_log_analytics_workspace.audit[0].id
5252
postgres_backup_retention_days = var.postgres_backup_retention_days
5353
postgres_geo_redundant_backup_enabled = var.postgres_geo_redundant_backup_enabled
54+
postgres_prevent_destroy = var.postgres_prevent_destroy
5455
postgres_sku_name = var.postgres_sku_name
5556
postgres_sql_admin_group = "postgres_${var.app_short_name}_${var.env_config}_uks_admin"
5657
postgres_storage_mb = var.postgres_storage_mb

infrastructure/terraform/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ variable "postgres_geo_redundant_backup_enabled" {
7272
default = true
7373
}
7474

75+
variable "postgres_prevent_destroy" {
76+
type = bool
77+
default = true
78+
description = "If true, prevents the PostgreSQL flexible server from being destroyed."
79+
}
80+
7581
variable "postgres_sku_name" {
7682
description = "Value of the PostgreSQL Flexible Server SKU name"
7783
default = "B_Standard_B1ms"

0 commit comments

Comments
 (0)