diff --git a/DEV_STAND/CRUD/locals.tf b/DEV_STAND/CRUD/locals.tf index 5a66637..a8ba022 100644 --- a/DEV_STAND/CRUD/locals.tf +++ b/DEV_STAND/CRUD/locals.tf @@ -1,54 +1,91 @@ # ============================================================================= -# locals.tf — все настраиваемые значения модуля CRUD (PG + Lucee + Flask) +# locals.tf — все настраиваемые значения модуля CRUD (PG + Lucee + Flask + Node.js) # Никакого хардкода в ресурсах — всё здесь. # ============================================================================= locals { - # ─── PostgreSQL ────────────────────────────────────────────────────────── - pg_resource_name = "pg4crud" - pg_cpu = 500 - pg_memory = 512 - pg_replicas = 1 - pg_disk = 10 - pg_version = "17" - pg_retain = 14 - pg_schedule = "0 0 * * *" - pg_timeout = "11m" - # ─── PostgreSQL User ───────────────────────────────────────────────────── - pg_username = "user4crudpg" - pg_role = "ddl_user" - pg_db_name = "db4crudpg" + # ═══════════════════════════════════════════════════════════════════════════ + # PostgreSQL — общая БД для всех трёх приложений + # ═══════════════════════════════════════════════════════════════════════════ - # ─── Lucee ─────────────────────────────────────────────────────────────── - lucee_git_revision = "94d6677" - lucee_resource_name = "luceecrud" - lucee_domain = "tfluceedev" - lucee_version = "5.4" + pg_resource_name = "pg4crud" # имя ресурса в Nubes + pg_cpu = 500 # CPU в millicores (500 = 0.5 ядра) + pg_memory = 512 # память в MB + pg_replicas = 1 # количество реплик + pg_disk = 10 # диск в GB + pg_version = "17" # версия PostgreSQL + pg_retain = 14 # дней хранения бэкапов + pg_schedule = "0 0 * * *" # cron расписание бэкапов (ежедневно в полночь) + pg_timeout = "11m" # таймаут операций create/modify + + # ═══════════════════════════════════════════════════════════════════════════ + # PostgreSQL — пользователь и база данных + # ═══════════════════════════════════════════════════════════════════════════ + + pg_username = "user4crudpg" # имя пользователя БД + pg_role = "ddl_user" # роль (ddl_user = может создавать таблицы) + pg_db_name = "db4crudpg" # имя базы данных + + # ═══════════════════════════════════════════════════════════════════════════ + # Lucee — CFML-приложение (сервис 94) + # ═══════════════════════════════════════════════════════════════════════════ + + lucee_git_revision = "94d6677" # коммит/тег в git (менять для редеплоя) + lucee_resource_name = "luceecrud" # имя ресурса в Nubes + lucee_domain = "tfluceedev" # домен (станет tfluceedev.luceek8s.dev.nubes.ru) + lucee_version = "5.4" # версия Lucee (CFML engine) lucee_git_path = "https://gitea.services.ngcloud.ru/Nail/tfluceecrud.git" - lucee_cpu = 300 - lucee_memory = 512 - lucee_replicas = 1 + lucee_cpu = 300 # CPU в millicores + lucee_memory = 512 # память в MB + lucee_replicas = 1 # количество реплик - # ─── Таблица CRUD ──────────────────────────────────────────────────────── - crud_table_name = "crud_items" + # ═══════════════════════════════════════════════════════════════════════════ + # Таблица CRUD — общая для всех трёх приложений + # ═══════════════════════════════════════════════════════════════════════════ - # ─── Flask ─────────────────────────────────────────────────────────────── - flask_git_revision = "34c030c" - flask_resource_name = "flaskcrud" - flask_domain = "tfflaskdev" + crud_table_name = "crud_items" # имя таблицы (TABLE_NAME в env) + + # ═══════════════════════════════════════════════════════════════════════════ + # Flask — Python-приложение (сервис 89) + # ═══════════════════════════════════════════════════════════════════════════ + + flask_git_revision = "34c030c" # коммит/тег в git (менять для редеплоя) + flask_resource_name = "flaskcrud" # имя ресурса в Nubes + flask_domain = "tfflaskdev" # домен (станет tfflaskdev.pythonk8s.dev.nubes.ru) flask_git_path = "https://gitea.services.ngcloud.ru/Nail/tfflaskcrud.git" - flask_cpu = 300 - flask_memory = 512 - flask_replicas = 1 + flask_cpu = 300 # CPU в millicores + flask_memory = 512 # память в MB + flask_replicas = 1 # количество реплик + + # ═══════════════════════════════════════════════════════════════════════════ + # Node.js — Express-приложение (сервис 95) + # ═══════════════════════════════════════════════════════════════════════════ + + nodejs_git_revision = "1c646c6" # коммит/тег в git (менять для редеплоя) + nodejs_resource_name = "nodejscrud" # имя ресурса в Nubes + nodejs_domain = "tfnodejsdev" # домен (станет tfnodejsdev.<суффикс>.dev.nubes.ru) + nodejs_git_path = "https://gitea.services.ngcloud.ru/Nail/tfnodejscrud.git" + nodejs_cpu = 300 # CPU в millicores + nodejs_memory = 512 # память в MB + nodejs_replicas = 1 # количество реплик + nodejs_timeout = "15m" # таймаут операций create/modify + + # ═══════════════════════════════════════════════════════════════════════════ + # JDBC — параметры подключения Lucee к PostgreSQL + # ═══════════════════════════════════════════════════════════════════════════ - # ─── JDBC / БД ─────────────────────────────────────────────────────────── jdbc_class = "org.postgresql.Driver" jdbc_bundle_name = "org.postgresql.jdbc" jdbc_bundle_version = "42.6.0" - jdbc_conn_limit = "5" - jdbc_live_timeout = "15" - jdbc_validate = "false" - pg_port = "5432" - pg_ssl_mode = "require" + jdbc_conn_limit = "5" # макс. количество соединений + jdbc_live_timeout = "15" # таймаут неактивного соединения (минут) + jdbc_validate = "false" # валидация соединения при выдаче из пула + + # ═══════════════════════════════════════════════════════════════════════════ + # PostgreSQL — общие параметры подключения + # ═══════════════════════════════════════════════════════════════════════════ + + pg_port = "5432" # порт PostgreSQL + pg_ssl_mode = "require" # SSL-режим (require = обязательно TLS) } diff --git a/DEV_STAND/CRUD/nodejs.tf b/DEV_STAND/CRUD/nodejs.tf new file mode 100644 index 0000000..64f8371 --- /dev/null +++ b/DEV_STAND/CRUD/nodejs.tf @@ -0,0 +1,47 @@ +# ============================================================================= +# Node.js — CRUD (та же PG, та же таблица что у Lucee/Flask) +# ============================================================================= +locals { + nodejs_pg_host = nubes_postgres.main_pg.state_out_flat["internalMaster"] + nodejs_pg_user = nubes_postgres_user.crud_user_0.username + nodejs_pg_pass = nonsensitive(jsondecode(nubes_postgres.main_pg.vault_secrets["users"]).user4crudpg.password) + nodejs_pg_db = nubes_postgres_database.pg_db.db_name +} + +resource "nubes_nodejs" "appnodejs" { + resource_name = local.nodejs_resource_name + + startup_configuration = { + resource_realm = var.realm + } + + cluster_configuration = { + cpu = local.nodejs_cpu + memory = local.nodejs_memory + replicas = local.nodejs_replicas + } + + access_configuration = { + domain = local.nodejs_domain + } + + app_configuration = { + version = "22" + git_path = local.nodejs_git_path + health_path = "/" + } + + git_revision = local.nodejs_git_revision + operation_timeout = local.nodejs_timeout + + json_env = jsonencode({ + TABLE_NAME = local.crud_table_name + PGHOST = local.nodejs_pg_host + PGPORT = local.pg_port + PGUSER = local.nodejs_pg_user + PGPASSWORD = local.nodejs_pg_pass + PGDATABASE = local.nodejs_pg_db + }) + + depends_on = [nubes_postgres.main_pg] +}