infra/data.tf
Rama main · réplica de lectura del repositorio original.
resource "google_sql_database_instance" "tamery" {
name = "tamery"
region = local.region
database_version = "POSTGRES_18"
deletion_protection = true
settings {
tier = "db-custom-1-3840"
edition = "ENTERPRISE"
availability_type = "ZONAL"
disk_type = "PD_SSD"
disk_autoresize = true
deletion_protection_enabled = true
backup_configuration {
enabled = true
start_time = "02:00"
point_in_time_recovery_enabled = true
transaction_log_retention_days = 7
backup_retention_settings {
retained_backups = 14
retention_unit = "COUNT"
}
}
ip_configuration {
ipv4_enabled = true
private_network = google_compute_network.tamery.id
ssl_mode = "ENCRYPTED_ONLY"
dynamic "authorized_networks" {
for_each = var.sql_authorized_networks
content {
name = authorized_networks.key
value = authorized_networks.value
}
}
}
maintenance_window {
day = 7
hour = 3
}
}
lifecycle {
prevent_destroy = true
# Autoresize grows the disk, and it cannot shrink.
ignore_changes = [settings[0].disk_size]
}
depends_on = [google_service_networking_connection.private_services]
}
resource "google_sql_database" "tamery" {
name = "tamery"
instance = google_sql_database_instance.tamery.name
}
# Passwords stay out of the state: they live in Secret Manager, set outside OpenTofu.
resource "google_sql_user" "this" {
for_each = toset(["postgres", "tamery_app"])
name = each.value
instance = google_sql_database_instance.tamery.name
lifecycle {
ignore_changes = [password]
}
}
resource "google_redis_instance" "tamery" {
name = "tamery"
region = local.region
tier = "BASIC"
memory_size_gb = 1
redis_version = "REDIS_7_2"
authorized_network = google_compute_network.tamery.id
connect_mode = "PRIVATE_SERVICE_ACCESS"
auth_enabled = true
transit_encryption_mode = "SERVER_AUTHENTICATION"
maintenance_policy {
weekly_maintenance_window {
day = "SUNDAY"
start_time {
hours = 3
}
}
}
lifecycle {
prevent_destroy = true
# The API does not return it, and a diff here replaces the instance.
ignore_changes = [reserved_ip_range]
}
depends_on = [google_service_networking_connection.private_services]
}