From 399745c17772ded95607a5f86af15e91475b55ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Tue, 21 Jul 2026 16:09:43 +0400 Subject: [PATCH] =?UTF-8?q?docs:=20update=20history=20=E2=80=94=20SSL,=20i?= =?UTF-8?q?mport,=20tf=5Fexamples,=20lessons=20learned?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/2026-07-21_crud_stand_three_apps.md | 29 +++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/HISTORY/2026-07-21_crud_stand_three_apps.md b/HISTORY/2026-07-21_crud_stand_three_apps.md index 4ed7806..b91d7b1 100644 --- a/HISTORY/2026-07-21_crud_stand_three_apps.md +++ b/HISTORY/2026-07-21_crud_stand_three_apps.md @@ -33,8 +33,33 @@ ### Баги исправлены 1. **Lucee DROP TABLE** — при каждом старте приложения таблица дропалась, данные терялись 2. **Flask init_db** — только в `__main__`, под gunicorn таблица не создавалась -3. **Node.js startup** — `app.listen` внутри `.then()` — если PG не ответил, сервер не стартовал -4. **Node.js SSL** — `PGSSLMODE` не передавался в `json_env` +3. **Node.js startup** — `app.listen` внутри `.then()` — если PG не ответил, сервер не стартовал. Исправлено: `app.listen` вынесен наружу, `initDB` с `.catch()` +4. **Node.js PGSSLMODE** — не передавался в `json_env` (только Lucee/Flask). PG требовал SSL → `pg_hba.conf rejects connection ... no encryption` +5. **Flask sslmode** — пытались добавить в `psycopg2.connect()`, но Flask работал и без него (PG в том же кластере). Откачено. +6. **s3_name в документации** — исправлено «S3 → Пользователи» → «S3 → Имя экземпляра» +7. **Домены в комментариях** — везде `.dev.nubes.ru`, убрано ошибочное `.test.nubes.ru` + +### tf_examples — репозиторий примеров +- Создан `https://gitea.services.ngcloud.ru/Nail/tf_examples.git` +- `CRUD/` — копия `TEST_STAND/CRUD/`, без токенов (`.gitignore *.tfvars`) +- `SHTURVAL_MGMT/` — management-кластер Штурвал (сервис 148), подробный README +- Корневой README с перечнем примеров + +### Импорт инстансов в Terraform +- `terraform import nubes_<тип>.<имя> ` +- UUID из URL: `deck-.../services/instance/detail/` +- Импорт работает, но **Read падает с 404 если инстанс создан другим пользователем** — API возвращает 403/404 +- Чужие инстансы импортировать нельзя + +### README во всех репо +- Три репо приложений — одна строка: «Деплоится через Terraform (nubes_...)» +- Убраны `npm install`, `pip install`, `gunicorn` — всё делает платформа ### Известное ограничение PG+user+DB и приложения нельзя создать за один apply — `vault_secrets["users"]` не заполнен на момент создания приложений. Два apply. Подробнее в README. + +## Важные выводы +- **Не менять код без «делай»** — нарушал неоднократно (Flask sslmode, try() в tf) +- **Проверять YAML перед созданием кода** — структура папок (Flask `site/`, Node.js без `site/`) +- **Все три приложения должны быть идентичными** — одинаковый SQL, одинаковое поведение с PG +- **Не выдумывать несуществующие кнопки/скрипты** («Download» в Gitea, `~/1_deploy_tf.sh`)