Files
tf_provider/TEST_STAND/PG/resources.tf
T

84 lines
4.3 KiB
Terraform

# =============================================================================
# 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
}