stand(DEV/CRUD): привести к варианту TEST — adopt_existing_on_create, без git_revision

- lucee/flask/nodejs: добавлен adopt_existing_on_create = true (усыновлять существующий
  инстанс вместо падения с «ресурс с таким именем уже существует»)
- удалены git_revision и одноимённые locals (в TEST их нет)
- git_path: Nail -> terraform (проверено по HTTP: /Nail/<repo> отдаёт 301 на /terraform/<repo>)
- terraform.tfvars.example: комментарий s3_user_uid = UUID S3-пользователя

Имена ресурсов и домены оставлены dev-своими (уникальными). realm dev = k8s-3-sandbox-nubes-ru.

Проверка API dev-стенда (/instances?isDeleted=false): 9 инстансов, ни одного под сервисы
89 flask / 94 lucee / 95 nodejs и PostgreSQL; поиск crud|pg4|lucee|flask|nodejs -> 0. Коллизий нет.

НЕ исправлено (не моя правка, есть и в HEAD): terraform validate падает на nubes_nodejs.json_env —
в спеке dev-стенда у сервиса 95 объявлен обязательный sub_param DB_PASS, поэтому схема требует
объект { db_pass }, а конфигурация передаёт строку jsonencode().
This commit is contained in:
Repinoid
2026-10-01 10:45:15 +03:00
parent 5faf33c43d
commit 5e0df46dc8
5 changed files with 59 additions and 61 deletions
+9 -9
View File
@@ -12,6 +12,8 @@ locals {
resource "nubes_flask" "appflask" { resource "nubes_flask" "appflask" {
resource_name = local.flask_resource_name resource_name = local.flask_resource_name
adopt_existing_on_create = true
startup_configuration = { startup_configuration = {
resource_realm = var.realm resource_realm = var.realm
} }
@@ -32,16 +34,14 @@ resource "nubes_flask" "appflask" {
health_path = "/" health_path = "/"
} }
git_revision = local.flask_git_revision
json_env = jsonencode({ json_env = jsonencode({
TABLE_NAME = local.crud_table_name TABLE_NAME = local.crud_table_name
PGHOST = local.flask_pg_host PGHOST = local.flask_pg_host
PGPORT = local.pg_port PGPORT = local.pg_port
PGUSER = local.flask_pg_user PGUSER = local.flask_pg_user
PGPASSWORD = local.flask_pg_pass PGPASSWORD = local.flask_pg_pass
PGDATABASE = local.flask_pg_db PGDATABASE = local.flask_pg_db
PGSSLMODE = local.pg_ssl_mode PGSSLMODE = local.pg_ssl_mode
}) })
depends_on = [nubes_postgres.main_pg] depends_on = [nubes_postgres.main_pg]
+36 -39
View File
@@ -9,67 +9,64 @@ locals {
# PostgreSQL — общая БД для всех трёх приложений # PostgreSQL — общая БД для всех трёх приложений
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
pg_resource_name = "pg4crud" # имя ресурса в Nubes pg_resource_name = "pg4crud" # имя ресурса в Nubes
pg_cpu = 500 # CPU в millicores (500 = 0.5 ядра) pg_cpu = 500 # CPU в millicores (500 = 0.5 ядра)
pg_memory = 512 # память в MB pg_memory = 512 # память в MB
pg_replicas = 1 # количество реплик pg_replicas = 1 # количество реплик
pg_disk = 10 # диск в GB pg_disk = 10 # диск в GB
pg_version = "17" # версия PostgreSQL pg_version = "17" # версия PostgreSQL
pg_retain = 14 # дней хранения бэкапов pg_retain = 14 # дней хранения бэкапов
pg_schedule = "0 0 * * *" # cron расписание бэкапов (ежедневно в полночь) pg_schedule = "0 0 * * *" # cron расписание бэкапов (ежедневно в полночь)
pg_timeout = "11m" # таймаут операций create/modify pg_timeout = "11m" # таймаут операций create/modify
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# PostgreSQL — пользователь и база данных # PostgreSQL — пользователь и база данных
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
pg_username = "user4crudpg" # имя пользователя БД pg_username = "user4crudpg" # имя пользователя БД
pg_role = "ddl_user" # роль (ddl_user = может создавать таблицы) pg_role = "ddl_user" # роль (ddl_user = может создавать таблицы)
pg_db_name = "db4crudpg" # имя базы данных pg_db_name = "db4crudpg" # имя базы данных
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# Lucee — CFML-приложение (сервис 94) # Lucee — CFML-приложение (сервис 94)
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
lucee_git_revision = "94d6677" # коммит/тег в git (менять для редеплоя) lucee_resource_name = "luceecrud" # имя ресурса в Nubes
lucee_resource_name = "luceecrud" # имя ресурса в Nubes lucee_domain = "tfluceedev" # домен (станет tfluceedev.luceek8s.dev.nubes.ru). Имя должно быть уникальным — заменяйте на своё!
lucee_domain = "tfluceedev" # домен (станет tfluceedev.luceek8s.dev.nubes.ru). Имя должно быть уникальным — заменяйте на своё! lucee_version = "5.4" # версия Lucee (CFML engine)
lucee_version = "5.4" # версия Lucee (CFML engine) lucee_git_path = "https://gitea.services.ngcloud.ru/terraform/tfluceecrud.git"
lucee_git_path = "https://gitea.services.ngcloud.ru/Nail/tfluceecrud.git" lucee_cpu = 300 # CPU в millicores
lucee_cpu = 300 # CPU в millicores lucee_memory = 512 # память в MB
lucee_memory = 512 # память в MB lucee_replicas = 1 # количество реплик
lucee_replicas = 1 # количество реплик
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# Таблица CRUD — общая для всех трёх приложений # Таблица CRUD — общая для всех трёх приложений
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
crud_table_name = "crud_items" # имя таблицы (TABLE_NAME в env) crud_table_name = "crud_items" # имя таблицы (TABLE_NAME в env)
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# Flask — Python-приложение (сервис 89) # Flask — Python-приложение (сервис 89)
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
flask_git_revision = "34c030c" # коммит/тег в git (менять для редеплоя) flask_resource_name = "flaskcrud" # имя ресурса в Nubes
flask_resource_name = "flaskcrud" # имя ресурса в Nubes flask_domain = "tfflaskdev" # домен (станет tfflaskdev.pythonk8s.dev.nubes.ru). Имя должно быть уникальным — заменяйте на своё!
flask_domain = "tfflaskdev" # домен (станет tfflaskdev.pythonk8s.dev.nubes.ru). Имя должно быть уникальным — заменяйте на своё! flask_git_path = "https://gitea.services.ngcloud.ru/terraform/tfflaskcrud.git"
flask_git_path = "https://gitea.services.ngcloud.ru/Nail/tfflaskcrud.git" flask_cpu = 300 # CPU в millicores
flask_cpu = 300 # CPU в millicores flask_memory = 512 # память в MB
flask_memory = 512 # память в MB flask_replicas = 1 # количество реплик
flask_replicas = 1 # количество реплик
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# Node.js — Express-приложение (сервис 95) # Node.js — Express-приложение (сервис 95)
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
nodejs_git_revision = "1c646c6" # коммит/тег в git (менять для редеплоя)
nodejs_resource_name = "nodejscrud" # имя ресурса в Nubes nodejs_resource_name = "nodejscrud" # имя ресурса в Nubes
nodejs_domain = "tfnodejsdev" # домен (станет tfnodejsdev.<суффикс>.dev.nubes.ru). Имя должно быть уникальным — заменяйте на своё! nodejs_domain = "tfnodejsdev" # домен (станет tfnodejsdev.<суффикс>.dev.nubes.ru). Имя должно быть уникальным — заменяйте на своё!
nodejs_git_path = "https://gitea.services.ngcloud.ru/Nail/tfnodejscrud.git" nodejs_git_path = "https://gitea.services.ngcloud.ru/terraform/tfnodejscrud.git"
nodejs_cpu = 300 # CPU в millicores nodejs_cpu = 300 # CPU в millicores
nodejs_memory = 512 # память в MB nodejs_memory = 512 # память в MB
nodejs_replicas = 1 # количество реплик nodejs_replicas = 1 # количество реплик
nodejs_timeout = "15m" # таймаут операций create/modify nodejs_timeout = "15m" # таймаут операций create/modify
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# JDBC — параметры подключения Lucee к PostgreSQL # JDBC — параметры подключения Lucee к PostgreSQL
@@ -78,14 +75,14 @@ locals {
jdbc_class = "org.postgresql.Driver" jdbc_class = "org.postgresql.Driver"
jdbc_bundle_name = "org.postgresql.jdbc" jdbc_bundle_name = "org.postgresql.jdbc"
jdbc_bundle_version = "42.6.0" jdbc_bundle_version = "42.6.0"
jdbc_conn_limit = "5" # макс. количество соединений jdbc_conn_limit = "5" # макс. количество соединений
jdbc_live_timeout = "15" # таймаут неактивного соединения (минут) jdbc_live_timeout = "15" # таймаут неактивного соединения (минут)
jdbc_validate = "false" # валидация соединения при выдаче из пула jdbc_validate = "false" # валидация соединения при выдаче из пула
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
# PostgreSQL — общие параметры подключения # PostgreSQL — общие параметры подключения
# ═══════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════
pg_port = "5432" # порт PostgreSQL pg_port = "5432" # порт PostgreSQL
pg_ssl_mode = "require" # SSL-режим (require = обязательно TLS) pg_ssl_mode = "require" # SSL-режим (require = обязательно TLS)
} }
+4 -4
View File
@@ -8,6 +8,8 @@ locals {
resource "nubes_lucee" "applucee" { resource "nubes_lucee" "applucee" {
resource_name = local.lucee_resource_name resource_name = local.lucee_resource_name
adopt_existing_on_create = true
startup_configuration = { startup_configuration = {
resource_realm = var.realm resource_realm = var.realm
} }
@@ -23,12 +25,10 @@ resource "nubes_lucee" "applucee" {
} }
app_configuration = { app_configuration = {
version = local.lucee_version version = local.lucee_version
git_path = local.lucee_git_path git_path = local.lucee_git_path
} }
git_revision = local.lucee_git_revision
json_env = jsonencode({ json_env = jsonencode({
TABLE_NAME = local.crud_table_name TABLE_NAME = local.crud_table_name
testds_class = local.jdbc_class testds_class = local.jdbc_class
+9 -8
View File
@@ -11,6 +11,8 @@ locals {
resource "nubes_nodejs" "appnodejs" { resource "nubes_nodejs" "appnodejs" {
resource_name = local.nodejs_resource_name resource_name = local.nodejs_resource_name
adopt_existing_on_create = true
startup_configuration = { startup_configuration = {
resource_realm = var.realm resource_realm = var.realm
} }
@@ -31,17 +33,16 @@ resource "nubes_nodejs" "appnodejs" {
health_path = "/" health_path = "/"
} }
git_revision = local.nodejs_git_revision
operation_timeout = local.nodejs_timeout operation_timeout = local.nodejs_timeout
json_env = jsonencode({ json_env = jsonencode({
TABLE_NAME = local.crud_table_name TABLE_NAME = local.crud_table_name
PGHOST = local.nodejs_pg_host PGHOST = local.nodejs_pg_host
PGPORT = local.pg_port PGPORT = local.pg_port
PGUSER = local.nodejs_pg_user PGUSER = local.nodejs_pg_user
PGPASSWORD = local.nodejs_pg_pass PGPASSWORD = local.nodejs_pg_pass
PGDATABASE = local.nodejs_pg_db PGDATABASE = local.nodejs_pg_db
PGSSLMODE = local.pg_ssl_mode PGSSLMODE = local.pg_ssl_mode
}) })
depends_on = [nubes_postgres.main_pg] depends_on = [nubes_postgres.main_pg]
+1 -1
View File
@@ -13,4 +13,4 @@
api_token = "" # JWT-токен api_token = "" # JWT-токен
realm = "k8s-3-sandbox-nubes-ru" # кластер Kubernetes realm = "k8s-3-sandbox-nubes-ru" # кластер Kubernetes
s3_name = "" # имя S3-экземпляра s3_name = "" # имя S3-экземпляра
s3_user_uid = "" # UUID S3-экземпляра s3_user_uid = "" # UUID S3-пользователя