iac/aero/roles/sarex_stack/tasks
emelinda 6d6703ed2d BIM: расширение ltree и задача досоздания баз в живой СУБД
Продолжение разбора: после появления bimapidb оба пода упали на
  psycopg2.ProgrammingError: ltree type not found in the database
а миграция api — на
  type "ltree" does not exist
  LINE 2: ALTER TABLE bimelement ADD hierarchy ltree null;
models/database.py при инициализации зовёт register_ltree(conn), без
расширения приложение не стартует. Роль bim не суперпользователь и
CREATE EXTENSION сама не сделает — расширение обязан завести бутстрап,
как у sarex_db и workflow_db. Добавлено в contour.databases.

--- Почему понадобилась отдельная задача ansible ---

Базы и расширения описаны декларативно, но заводит их скрипт бутстрапа
ТОЛЬКО при старте пода postgresql. На живом кластере правка списка
доезжает до Kubernetes и не делает ничего: спецификация пода не меняется,
пересоздания нет. Flux при этом полностью зелёный, а приложение падает с
"database does not exist" — связь между причиной и симптомом неочевидна.

Альтернатива — перезапуск postgresql-0, но это обрыв коннектов django,
processing и workspaces ради одной базы.

Добавлены tasks/databases.yml, список sarex_databases в defaults и задача
`uv run poe dbsync`. Делает ровно то же, что бутстрап, но без простоя, и
идемпотентно: существующие базы пропускаются, расширения создаются через
IF NOT EXISTS. Расширения обрабатываются отдельным шагом и всегда, а не
только для новых баз, — расширение может появиться в списке позже самой
базы, ровно так и вышло с ltree.

Проверено на живом контуре: bim-api 2/2 (uWSGI поднял воркеров),
bim-worker 2/2 (celery подключился к брокеру, 8 задач зарегистрировано).
2026-08-09 21:55:27 +03:00
..
databases.yml BIM: расширение ltree и задача досоздания баз в живой СУБД 2026-08-09 21:55:27 +03:00
gitea-sync.yml feat(aero): базовый слой контура — Vault↔k3s, GitOps-синхронизация, выход наружу 2026-08-08 09:36:08 +03:00
main.yml BIM: расширение ltree и задача досоздания баз в живой СУБД 2026-08-09 21:55:27 +03:00
platform.yml feat(aero): базовый слой контура — Vault↔k3s, GitOps-синхронизация, выход наружу 2026-08-08 09:36:08 +03:00
registry-secrets.yml feat(ansible): add private registry configuration for k3s and Flux with secure key handling 2026-08-03 15:40:07 +03:00
registry.yml feat(ansible): add private registry configuration for k3s and Flux with secure key handling 2026-08-03 15:40:07 +03:00
reload.yml Measurements пишет в общий бакет контура + перекат нагрузок в ansible 2026-08-09 11:58:06 +03:00
vault-k8s.yml feat(aero): базовый слой контура — Vault↔k3s, GitOps-синхронизация, выход наружу 2026-08-08 09:36:08 +03:00