84 lines
4.3 KiB
Terraform
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
|
|
}
|
|
|