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`, не коммитить и не пересылать.
|
> ⚠️ В `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/`)
|
### 3. Приложения (`apps/`)
|
||||||
|
|
||||||
@@ -145,3 +106,46 @@ terraform apply
|
|||||||
| `apps/locals.tf` | чтение `creds.json`, домены, версии, размеры |
|
| `apps/locals.tf` | чтение `creds.json`, домены, версии, размеры |
|
||||||
| `apps/lucee.tf`, `apps/flask.tf`, `apps/nodejs.tf` | три приложения |
|
| `apps/lucee.tf`, `apps/flask.tf`, `apps/nodejs.tf` | три приложения |
|
||||||
| `apps/creds.json` | генерируется шагом 2, **не в git** |
|
| `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