test_stand/crud: из README и комментариев убрана вся история (try, «раньше»)

README читает человек впервые — ему нужны структура, шаги запуска и операции,
а не разбор прошлых костылей. Удалено:
- раздел «Почему нельзя создать всё одним apply» с историей про try() и PGPASSWORD;
- упоминания try() в apps/lucee.tf, apps/flask.tf, apps/nodejs.tf;
- «data-source/backend» из apps/locals.tf и путь к удалённому разделу из pg/outputs.tf.

Заодно удалён старый TEST_STAND/CRUD/terraform.tfvars (не читается, значения
перенесены в pg/terraform.tfvars и apps/terraform.tfvars).

Проверено: terraform validate — Success в pg/ и apps/ (apps — с временным creds.json).
This commit is contained in:
Repinoid
2026-10-01 16:42:46 +03:00
parent 4834e992f3
commit ed92de1544
6 changed files with 11 additions and 33 deletions
+3 -19
View File
@@ -19,19 +19,6 @@ CRUD/
| **БД — общий ресурс** | к одному кластеру можно подключить сколько угодно папок-потребителей: `apps/`, потом ещё `my-service/`, `reporting/` и т.д. |
| **Разные жизненные циклы** | приложения пересоздаются сколько угодно раз, БД живёт всё это время |
Если держать PG и приложения в одном state, `terraform destroy` снесёт **и кластер
с данными**. Именно поэтому база вынесена отдельно.
### 🎯 Почему нельзя создать всё одним `apply`
Пароль пользователя БД генерирует платформа и отдаёт его в выходе кластера
`vault_secrets["users"]` — **только после** операции `create_user`. При создании
всё одним `apply` приложения запрашивали пароль, когда его ещё не существовало,
и поднимались с пустым `PGPASSWORD` (раньше это маскировалось функцией `try()`).
Теперь порядок явный: **сначала БД отдельным прогоном, потом приложения** — пароль
к этому моменту существует и лежит в файле `apps/creds.json`. Костыль `try()` убран.
---
## 📋 Порядок запуска (по шагам)
@@ -72,14 +59,11 @@ terraform output -json > ../apps/creds.json
**Что делает:** выгружает хост БД, порт, имя пользователя, имя базы и пароль в файл
`apps/creds.json`. Папка `apps/` читает этот файл (см. `apps/locals.tf`).
**Почему файлом, а не «само»:** `pg/` и `apps/` — разные состояния Terraform
(разные `terraform.tfstate`), между ними значения автоматически не передаются:
у провайдера нет data-source, а общего backend в стенде нет. Поэтому креды
передаются явной выгрузкой outputs — зато видно, что и откуда берётся.
**Почему файлом:** `pg/` и `apps/` — разные состояния Terraform, значения между ними
сами не передаются.
> ⚠️ В `creds.json` пароль **в открытом виде**. Файл добавлен в `apps/.gitignore`.
> Не коммитить и не пересылать. Если пароль ротировали (пересоздали пользователя
> в `pg/`) — повторите шаг 2, файл надо обновить.
> Не коммитить и не пересылать. Если пользователя БД пересоздавали — повторите шаг 2.
### Шаг 3. Приложения — папка `apps/`