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:
@@ -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/`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user