# Resource nubes_postgres Service ID: `90` Service Name: PostgreSQL [Manual](postgres.md) | [Create params](postgres_params_create.md) | [Modify params](postgres_params_modify.md) | [Output params](postgres_outputs.md) | [Operations](postgres_ops.md) | [Example](postgres_example.md) ## Create params Параметры сгруппированы в JSON-блоки. Каждый блок — это `jsonencode({...})` в манифесте. ### startup_configuration — платформа развёртывания | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `resourceRealm` | string | да | Платформа/K8s-кластер. Примеры: `k8s-3-sandbox-nubes-ru`, `iot-naeel`, `naeel-test-3` | ### cluster_configuration — размер кластера | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `cpu` | string | да | Квота CPU в милликорах (1000 = 1 vCPU) | | `memory` | string | да | Квота памяти в MB | | `replicas` | string | да | Количество нод (1 = без реплики, 2 = master + slave) | | `disk` | string | да | Размер диска в GB | ### access_configuration — сетевой доступ | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `masterIpSpace` | string | да | ipSpace для внешнего IP master. `"no-needed"` если не нужен | | `masterAccessList` | array | да | Список IP/сетей для доступа к master. `[]` если не ограничен | | `slaveIpSpace` | string | да | ipSpace для внешнего IP slave | | `slaveAccessList` | array | да | Список IP/сетей для доступа к slave | ### postgres_configuration — параметры PostgreSQL | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `version` | string | да | Версия PostgreSQL: `"16"`, `"17"` | | `sslRequired` | boolean | да | Требовать SSL-подключения | | `poolerMaster` | boolean | да | Включить PgBouncer для master | | `poolerSlave` | boolean | да | Включить PgBouncer для slave | ### postgres_conf — дополнительные параметры (опционально) Массив объектов `[{paramName, paramValue}]`. Пример: ```json [{"paramName": "log_connections", "paramValue": "''"}] ``` | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `paramName` | string | да | Имя параметра postgresql.conf | | `paramValue` | string | да | Значение параметра | ### backup_configuration — резервное копирование | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `s3Uid` | string | да | UUID существующего S3 Object Storage | | `retain` | string | да | Количество сохраняемых бэкапов | | `schedule` | string | да | Cron-расписание бэкапов. `"0 0 * * *"` = ежедневно в полночь | ### autoscale_configuration — автоскейлинг | Поле | Тип | Обязательное | Описание | |---|---|---|---| | `enabled` | boolean | да | Включить автоскейлинг | | `schedule` | string | да | Tech window | | `percent` | string | да | Процент увеличения при скейлинге | | `quota` | string | да | Максимальный размер диска в GB |
Параметры поведения (кратко)
По умолчанию: `suspend_on_destroy = True`, `adopt_existing_on_create = False`.
При `terraform destroy` или удалении ресурса из манифеста:
- `suspend_on_destroy=true` — инстанс переводится в `Suspend` (не удаляется).
- `suspend_on_destroy=false` — Terraform удаляет ресурс только из state.
При `apply` флаг `adopt_existing_on_create` работает как авто-`import`:
- `false` — если ресурс уже есть, будет ошибка.
- `true` — Terraform может взять существующий инстанс под управление (`running` → adopt, `suspended` → resume+adopt при совпадении параметров).
Важно: один инстанс должен быть только в одном state. Иначе получите конфликт управления.