# 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) ## Copy-ready manifest (`postgres_main.tf`) ```hcl terraform { required_providers { nubes = { source = "terra.k8c.ru/nubes-test/nubes" version = "5.0.57" } } } variable "api_token" { type = string sensitive = true } variable "s3_uid" { type = string } variable "realm" { type = string } provider "nubes" { api_token = var.api_token api_endpoint = "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc" } # ============================================================================= # PostgreSQL — основной ресурс # ============================================================================= resource "nubes_postgres" "baza" { resource_name = "pg-my-instance" # Платформа развёртывания startup_configuration = jsonencode({ resourceRealm = var.realm }) # Размер кластера cluster_configuration = jsonencode({ cpu = "500" memory = "512" replicas = "1" disk = "10" }) # Сетевой доступ access_configuration = jsonencode({ masterIpSpace = "no-needed" masterAccessList = [] slaveIpSpace = "no-needed" slaveAccessList = [] }) # Параметры PostgreSQL postgres_configuration = jsonencode({ version = "17" sslRequired = true poolerMaster = false poolerSlave = false }) # Доп. параметры postgresql.conf (опционально) postgres_conf = jsonencode([ { paramName = "log_connections" paramValue = "''" } ]) # Резервное копирование backup_configuration = jsonencode({ s3Uid = var.s3_uid retain = "7" schedule = "0 0 * * *" }) # Автоскейлинг autoscale_configuration = jsonencode({ enabled = false schedule = "0" percent = "10" quota = "100" }) operation_timeout = "11m" adopt_existing_on_create = true } # ============================================================================= # Пользователь базы данных # ============================================================================= resource "nubes_postgres_user" "app_user" { postgres_id = nubes_postgres.baza.id username = "myapp" role = "app_user" adopt_existing_on_create = true } # ============================================================================= # База данных # ============================================================================= resource "nubes_postgres_database" "app_db" { postgres_id = nubes_postgres.baza.id db_name = "myappdb" db_owner = nubes_postgres_user.app_user.username adopt_existing_on_create = true } ``` ## Outputs usage ```hcl # Выходные параметры можно использовать как nubes_postgres.baza.state_params["имя_ключа"] nubes_postgres.baza.state_out["имя_ключа"] nubes_postgres.baza.state_params_flat["имя_ключа"] nubes_postgres.baza.state_out_flat["имя_ключа"] nubes_postgres.baza.vault_secrets["имя_ключа"] nubes_postgres.baza.vault_url nubes_postgres.baza.vault_user_path nubes_postgres.baza.vault_fields ``` ## terraform.tfvars ```hcl api_token = "ваш_токен" s3_uid = "UUID-S3-Object-Storage" realm = "k8s-3-sandbox-nubes-ru" ```