Files
tf_examples/CRUD

CRUD Test Stand

Три приложения (Lucee / Flask / Node.js) + общая PostgreSQL. Каждое делает CRUD в одной таблице crud_items.

Как скачать

git clone https://gitea.services.ngcloud.ru/Nail/tf_examples.git
cd tf_examples/CRUD

## Что где менять

### 1. `terraform.tfvars` — заполнить `terraform.tfvars.example` и переименовать в `terraform.tfvars`

| Параметр | Где брать |
|---|---|
| `api_token` | ЛК → Профиль → Токены → создать «Технический» |
| `realm` | Кластер Kubernetes: `k8s-3-sandbox-nubes-ru` (песочница) или другой |
| `s3_name` | ЛК → S3 → Имя экземпляра |
| `s3_user_uid` | Там же — UUID. **ИЛИ** `s3_name` — любое одно, провайдер сам найдёт пару |

### 2. `locals.tf` — сменить домены

Каждое приложение должно иметь **уникальный** домен. Замени:

lucee_domain = "..." # станет <имя>.luceek8s.dev.nubes.ru flask_domain = "..." # станет <имя>.pythonk8s.dev.nubes.ru nodejs_domain = "..." # станет <имя>.<суффикс>.dev.nubes.ru


### 3. `locals.tf` — git_revision

При изменении кода в репозиториях (`tfluceecrud`, `tfflaskcrud`, `tfnodejscrud`) — обновить `*_git_revision` на новый хеш коммита. Terraform сам сделает redeploy.

## Порядок запуска

При первом создании PG не успевает отдать пароль юзера до того как стартуют приложения — Lucee/Flask/Node.js падают с ошибкой. Проще всего сделать два apply, чем усложнять `.tf` файлы:

```bash
terraform init
terraform apply   # 1. создаст PG + пользователя + БД
terraform apply   # 2. создаст Lucee + Flask + Node.js (пароль уже в стейте)

Альтернатива: закомментировать lucee.tf, flask.tf, nodejs.tfterraform apply → раскомментировать → terraform apply.

Дальше — один terraform apply при любых изменениях.

Состав

Файл Ресурс
main.tf Провайдер (nubes-test/nubes) + переменные
postgres.tf nubes_postgres.main_pg
postgres_user_db.tf Пользователь + БД
lucee.tf nubes_lucee.applucee
flask.tf nubes_flask.appflask
nodejs.tf nubes_nodejs.appnodejs
locals.tf Все настраиваемые значения