Загрузка данных


Шаг A — перенести архив на сервер (USB)

  Скинь blank-vm-deploy.tar.gz на флешку → на сервер, например в /root/blank-vm-deploy.tar.gz.

  Шаг B — на сервере: бэкап текущего кода + распаковка

  export TS=2026-08-03_1054   # тот же, что у дампа БД — чтобы пути сошлись

  # страховка: бэкап текущего кода (быстро, пара МБ) — для отката
  tar -czf /opt/terraform-web/backend/backups/pre_deploy_code_$TS.tar.gz \
    -C / opt/terraform-web/backend var/www/terraform-web

  # распаковать новые файлы точно по путям (перезапишет старые версии)
  tar -xzf /root/blank-vm-deploy.tar.gz -C /

  # убедиться, что файл миграции доехал
  ls -l /opt/terraform-web/backend/alembic/versions/add_os_images.py
  ⚠️  Распаковка не активирует новый код — uvicorn держит старый в памяти до рестарта. Поэтому это безопасно сделать сейчас, а рестарт — в самом конце, уже после миграции БД.

  Шаг C — БД: повторяем генерацию SQL (теперь файл на месте)

  cd /opt/terraform-web/backend
  /opt/terraform-web/venv/bin/alembic current                          # теперь: add_vm_groups_001 (уже НЕ head)
  /opt/terraform-web/venv/bin/alembic heads                            # покажет add_os_images_001 (head)
  /opt/terraform-web/venv/bin/alembic upgrade add_vm_groups_001:head --sql > /tmp/mig_$TS.sql
  cat /tmp/mig_$TS.sql
  → пришли мне cat /tmp/mig_$TS.sql. Теперь он должен содержать реальный DDL. Проверю глазами перед применением.

  Шаг D — тест на копии (через суперюзера postgres, т.к. у tfweb_user нет CREATEDB)

  Запустишь после моего «ок» по SQL — команды я уже дал в прошлом сообщении (sudo -u postgres createdb -O tfweb_user … restore … psql --single-transaction … \d os_images … dropdb).

  Шаг E — применить к проду → Шаг F — рестарт

  Тоже после успешного теста:
  psql -U tfweb_user -h localhost -d terraform_web --single-transaction -f /tmp/mig_$TS.sql
  /opt/terraform-web/venv/bin/alembic current                          # должно стать add_os_images_001
  sudo systemctl restart terraform-web terraform-admin
  sudo systemctl status terraform-web terraform-admin

  ---
  Итого прямо сейчас делаешь: Шаг A (флешка) → Шаг B (бэкап+распаковка) → Шаг C (генерация SQL) и присылаешь мне вывод cat /tmp/mig_$TS.sql. Я проверю DDL и дам добро на тест-копию.