docs(crud): справка по выходам pg перенесена в конец файла
Из шага 2 убран развёрнутый блок (он мешал последовательности трёх шагов), вместо него одна ссылка. Сам блок стал последним разделом файла «## Справка: выходные параметры pg/» (уровень заголовка 4 -> 2, т.к. теперь это самостоятельный раздел, а не подпункт шага 2). Содержимое не менялось. Проверено: grep заголовков (112: ## Справка), состав файла — 151 строка.
This commit is contained in:
+44
-40
@@ -58,46 +58,7 @@ 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/`)
|
||||
|
||||
@@ -145,3 +106,46 @@ terraform apply
|
||||
| `apps/locals.tf` | чтение `creds.json`, домены, версии, размеры |
|
||||
| `apps/lucee.tf`, `apps/flask.tf`, `apps/nodejs.tf` | три приложения |
|
||||
| `apps/creds.json` | генерируется шагом 2, **не в git** |
|
||||
|
||||
---
|
||||
|
||||
## Справка: выходные параметры `pg/`
|
||||
|
||||
В `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` |
|
||||
|
||||
Reference in New Issue
Block a user