5.2 KiB
5.2 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-104 | architecture | architect | proposed | 2026-06-11 | claude-opus-4-8 |
07 — Инфра-требования: ORCH-104 — Установочный скрипт Lite-тиража (интерактивный installer)
Work Item: ORCH-104 · Repo: orchestrator · Стадия: architecture
When-applicable: топология нашего прода не меняется — файл создан для аудитопригодности с явными
N/Aи фиксацией предусловий целевого хоста заказчика (на котором скрипт исполняется). Решения —06-adr/ADR-001-setup-lite-interactive-installer.md.
I-1. Топология / окружения
- Наш прод/staging (mva154):
N/A— задача scripts+docs+tests; контейнеры, порты, сеть, тома, compose-файлы не меняются. В нашем контуре скрипт инертен (активация — только явный запуск человеком; запуска на mva154 не предполагается вовсе). - Целевой хост заказчика (где скрипт работает): контур Lite без изменений — Linux x86_64,
Docker Engine + Compose v2, git, python3, node (LITE_SETUP §2). Скрипт сам сканирует эти
предусловия и предлагает доустановить недостающее (per-package consent, ADR D4); результат
установки — ровно базовый Lite-контур:
orchestrator+orchestrator-watchdog(orchestrator-stagingНЕ поднимается — строго заprofiles: [staging]). - Discovery-предположение: Plane/Gitea заказчика обнаруживаются только как
docker-инсталляции локального хоста (image-префиксы
makeplane/*,gitea/gitea*,docker.gitea.com/gitea*— ADR D5); native/k8s-инсталляции — честный ручной ввод URL (не FAIL). Сетевая достижимость Plane/Gitea с хоста оркестратора — предусловие заказчика (BRD §6).
I-2. Переменные окружения / секреты
- Новых ключей
Settings/.env.example/.env.watchdog.exampleНЕТ (TRZ §8) — каноны только читаются как шаблоны рендера. - Скрипт пишет целевые
.env/.env.watchdogна хосте заказчика: от канонов-example, права600, первая строка — маркер managed-файла# managed by scripts/setup_lite.py (ORCH-104)(ADR D6: немаркированный существующий файл → отказ exit 2 без--force). - Секреты: webhook-секреты — только свежий выпуск кирпичом
gen_secrets.py(субпроцесс); внешние токены (Plane/Gitea/Telegram ×2) — скрытый ввод оператора с немедленной верификацией; значения нигде не печатаются и не логируются (NFR-3). Боевые секреты исходного хоста не используются даже как подсказки-дефолты (stateless, LITE_SETUP §12). - Headless-prefill: переменные окружения процесса с каноническими именами ключей + явный
--yes(ADR D10); answers-file не вводится.
I-3. Деплой / рестарт
- Рестарт нашего прод-контейнера НЕ требуется и не выполняется (self-hosting инвариант):
изменение — файлы
scripts/+tests/+ docs; выкат задачи — штатный конвейер (deploy-staging 8501 →Confirm Deploy). - На хосте заказчика скрипт выполняет
docker compose up -d --buildи управляемый--force-recreate orchestratorтолько собственного свежеподнятого контура, после проверки тихого окнаGET /queue(ADR D11); чужие/уже бегущие контейнеры не трогаются без согласия (NFR-7); delete-операций нет вообще.
I-4. CI/CD
.gitea/workflows/— без изменений. Новый структурный/unit тест-модульtests/test_setup_lite_script.py+ аддитивный тест вtests/test_lite_setup_doc.pyпопадают в существующий прогонpytest tests/ -q(детерминированы: без TTY/сети/docker — инжектируемый I/O, моки, tmp_path; NFR-5).- Инфра-предусловий прод-образа нет (скрипт не входит в рантайм-контейнер как зависимость; pip-зависимости не добавляются — stdlib-only).