# ============================================================================= # PostgreSQL — основной ресурс # ============================================================================= resource "nubes_postgres" "npg" { resource_name = "pg4tf033777" # ← ЗАМЕНИ на своё имя # ── Платформа развёртывания ── startup_configuration = jsonencode({ resourceRealm = var.realm # ← задаётся в terraform.tfvars }) # ── Размер кластера ── cluster_configuration = jsonencode({ cpu = "500" # ← милликоры (1000 = 1 vCPU) memory = "512" # ← MB replicas = "1" # ← количество нод (1 = без реплики) disk = "11" # ← GB }) # ── Сетевой доступ ── access_configuration = jsonencode({ masterIpSpace = "no-needed" # ← ipSpace для внешнего IP master masterAccessList = [] # ← список IP/сетей для доступа к master slaveIpSpace = "no-needed" # ← ipSpace для внешнего IP slave slaveAccessList = [] # ← список IP/сетей для доступа к slave }) # ── Параметры PostgreSQL ── postgres_configuration = jsonencode({ version = "17" # ← версия PostgreSQL (16, 17, ...) sslRequired = true # ← требовать SSL poolerMaster = false # ← PgBouncer для master poolerSlave = false # ← PgBouncer для slave }) # ── Доп. параметры postgresql.conf (опционально, можно удалить блок) ── postgres_conf = jsonencode([ { paramName = "log_connections" paramValue = "''" } ]) # ── Резервное копирование ── backup_configuration = jsonencode({ s3Uid = var.s3_uid # ← UUID S3 (задаётся в terraform.tfvars) retain = "7" # ← сколько бэкапов хранить schedule = "0 0 * * *" # ← cron-расписание }) # ── Автоскейлинг ── autoscale_configuration = jsonencode({ enabled = false # ← включить автоскейлинг schedule = "0" # ← tech window percent = "10" # ← процент увеличения quota = "100" # ← максимальный размер диска (GB) }) operation_timeout = "11m" adopt_existing_on_create = true # ← true = подхватить существующий инстанс } # ============================================================================= # PostgreSQL — пользователь # ============================================================================= resource "nubes_postgres_user" "pg_user" { postgres_id = nubes_postgres.npg.id username = "user0" # ← ЗАМЕНИ на своё имя пользователя role = "ddl_user" # ← app_user (базовый) или ddl_user (расширенный) adopt_existing_on_create = true } # ============================================================================= # PostgreSQL — база данных # ============================================================================= resource "nubes_postgres_database" "db2_app" { postgres_id = nubes_postgres.npg.id db_name = "dbterra" # ← ЗАМЕНИ на своё имя БД (без подчёркиваний!) db_owner = nubes_postgres_user.pg_user.username adopt_existing_on_create = true }