Files
tf_provider/TEST_STAND/CRUD
Repinoid 106ddbe092 stand: switch every stand to actual provider versions (prod=1.0.0, dev=2.0.0, test=3.0.0)
Легаси-версии (5.0.x/5.1.x/3.1.x/2.1.x) в реестре отсутствуют (404), стенды не могли
пройти terraform init. Приведены к новой схеме нумерации от 2026-09-03.

- DEV  (nubes-dev):  CRUD, POSTGRES, SHTURVAL_MGMT -> 2.0.0
- TEST (nubes-test): CRUD, PG, POSTGRES, MARIA_DB, buck0, kuber, IOT_RMQ_DEMO -> 3.0.0
                     (DEV_STAND/IOT_KAFKA_DEMO тоже nubes-test -> 3.0.0)
- PROD (nubes):      PG1, POSTGRES, RABBIT -> 1.0.0
- README стендов TEST_STAND/buck0, TEST_STAND/PG: версии приведены к 3.0.0
- getting-started: убрана versioned-ссылка на доки (2.1.7) -> актуальный домен без версии
- .gitignore: откатано правило TMP/ (на remote TMP/init-test-*/main.tf трекаются)
2026-09-16 16:34:40 +03:00
..

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 файлы:

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 Все настраиваемые значения