// 2026-03-17 17:30 // resources.tf — ресурсы Postgres и однократный запуск SQL-инициализации через sless_job. resource "nubes_postgres" "npg" { resource_name = "teststand-pg-2" # s3_uid = "s01325" s3_uid = var.s3_uid resource_realm = var.realm resource_instances = 1 resource_memory = 512 resource_c_p_u = 500 resource_disk = "1" app_version = "17" json_parameters = jsonencode({ log_connections = "off" log_disconnections = "off" }) enable_pg_pooler_master = false enable_pg_pooler_slave = false allow_no_s_s_l = false auto_scale = false auto_scale_percentage = 10 auto_scale_tech_window = 0 auto_scale_quota_gb = "1" need_external_address_master = false # suspend_on_destroy = false operation_timeout = "11m" adopt_existing_on_create = true } resource "nubes_postgres_user" "pg_user" { postgres_id = nubes_postgres.npg.id username = "u-user0" role = "ddl_user" adopt_existing_on_create = true } resource "nubes_postgres_database" "db" { postgres_id = nubes_postgres.npg.id db_name = "db_terra" db_owner = nubes_postgres_user.pg_user.username adopt_existing_on_create = true # suspend_on_destroy = false } # Служебная функция выполняет SQL-операторы из event_json. resource "sless_function" "postgres_sql_runner_create_table" { name = "pg-create-table-runner" runtime = "python3.11" entrypoint = "sql_runner.run_sql" memory_mb = 128 timeout_sec = 30 env_vars = { PGHOST = nubes_postgres.npg.state_out_flat["internalConnect.master"] PGPORT = "5432" PGDATABASE = nubes_postgres_database.db.db_name PGUSER = var.pg_user PGPASSWORD = var.pg_password PGSSLMODE = "require" } source_dir = "${path.module}/code/sql-runner" } resource "sless_job" "postgres_table_init_job" { name = "pg-create-table-job-main-v12" function = sless_function.postgres_sql_runner_create_table.name wait_timeout_sec = 180 run_id = 12 event_json = jsonencode({ statements = [ "CREATE TABLE IF NOT EXISTS terraform_demo_table (id serial PRIMARY KEY, title text NOT NULL, created_at timestamp DEFAULT now())" ] }) depends_on = [ nubes_postgres_database.db ] }