diff --git a/TEST_STAND/CRUD/README.md b/TEST_STAND/CRUD/README.md index 27728ba..aed4aa8 100644 --- a/TEST_STAND/CRUD/README.md +++ b/TEST_STAND/CRUD/README.md @@ -58,6 +58,47 @@ terraform output -json > ../apps/creds.json > ⚠️ В `creds.json` пароль лежит **открытым текстом**: файл в `apps/.gitignore`, не коммитить и не пересылать. +#### Для справки: что выгружается и как это читают приложения + +В `pg/outputs.tf` объявлено шесть выходов: + +| Выход | Значение | Откуда | +|---|---|---| +| `pg_host` | внутренний хост master | `state_out_flat["internalMaster"]` кластера | +| `pg_port` | `5432` | константа в `outputs.tf` | +| `pg_username` | имя пользователя БД | выход подресурса `nubes_postgres_user` | +| `pg_db_name` | имя базы | выход `nubes_postgres_database` | +| `pg_password` | пароль, `sensitive = true` | выход подресурса `nubes_postgres_user`: платформа генерирует пароль сама при создании пользователя, провайдер читает его из Vault и отдаёт выходом подресурса | +| `pg_ssl_mode` | `require` | константа в `outputs.tf` | + +`terraform output -json` кладёт в файл не голые значения, а объекты вида `{ "sensitive": ..., "type": ..., "value": ... }`: + +```json +{ + "pg_host": { "sensitive": false, "type": "string", "value": "<хост master>" }, + "pg_password": { "sensitive": true, "type": "string", "value": "<пароль>" } +} +``` + +Поэтому в `apps/locals.tf` значение берётся через `.value`: + +```hcl +creds = jsondecode(file("${path.module}/creds.json")) +pg_host = local.creds.pg_host.value +pg_pass = local.creds.pg_password.value +``` + +Дальше `apps/*.tf` передают эти значения приложениям как переменные окружения: + +| Выход `pg/` | Flask | Node.js | Lucee | +|---|---|---|---| +| `pg_host` | `PGHOST` | `PGHOST` | `PGHOST`, `testds_connectionString` | +| `pg_port` | `PGPORT` | `PGPORT` | `PGPORT`, `testds_connectionString` | +| `pg_username` | `PGUSER` | `PGUSER` | `PGUSER`, `testds_username` | +| `pg_password` | `PGPASSWORD` | `PGPASSWORD` | `PGPASSWORD`, `testds_password` | +| `pg_db_name` | `PGDATABASE` | `PGDATABASE` | `testds_connectionString`, `DATABASE_URL` | +| `pg_ssl_mode` | `PGSSLMODE` | `PGSSLMODE` | `PGSSLMODE` | + ### 3. Приложения (`apps/`) ```bash