# Инфраструктурные требования — ORCH-036 Work Item: ORCH-036 Stage: architecture Автор: architect > Топология не меняется (та же mva154, те же два контейнера). Меняется ПРОЦЕДУРА > прод-деплоя орка: из ручной → исполняемая через хост-хук с ручным approve. ## 1. Контейнеры / порты — без изменений - prod `orchestrator` (8500), staging `orchestrator-staging` (8501) — как в INFRA.md. - Образы (имена для build-once): prod `orchestrator-orchestrator`, staging `orchestrator-orchestrator-staging`. ## 2. Хост-предусловия (Owner, в git не коммитятся) - **HP-1.** ssh-доступ из контейнера на хост: `ssh slin@$DEPLOY_SSH_HOST` работает под uid 1000 ключом из `~/.orchestrator-ssh` (INFRA P-2). Без него detached-запуск Фазы B невозможен. - **HP-2.** `/.deploy-state-/` доступен на запись и хосту (host-обёртка пишет `result`), и контейнеру (finalizer читает) — обеспечивается mount `/home/slin/repos ↔ /repos` (как merge-lease). - **HP-3.** `PREV_IMAGE_FILE` для прод — отдельный путь (`.deploy-prev-image-prod`), чтобы не путать снапшоты prod/staging. - **HP-4 (P-4 из INFRA).** Прод-рестарт self — только в окно тишины; общий инстанс с enduro-trails. На старте — под ручным approve (флаг `true`). ## 3. Переменные окружения (карта; значения — на хосте, в git только дескрипторы) | Переменная | Назначение | Дефолт | |-----------|-----------|--------| | `ORCH_DEPLOY_REQUIRE_MANUAL_APPROVE` | ручной approve перед прод-деплоем | `true` | | `DEPLOY_SSH_USER` / `DEPLOY_SSH_HOST` | ssh-цель хост-хука | — (INFRA-карта) | | `DEPLOY_HOOK_SCRIPT` | путь к хуку на хосте | `scripts/orchestrator-deploy-hook.sh` | | прод `TARGET_SERVICE/PORT/IMAGE`, `COMPOSE_PROFILE` | override прод-профиля хука | `orchestrator`/`8500`/`orchestrator-orchestrator`/пусто | | `SOURCE_IMAGE` (новый параметр хука) | образ для build-once retag | пусто → текущее поведение | | `ORCH_DEPLOY_FINALIZE_DELAY_S` | задержка перед первым finalize-поллом | > 60с (health-loop хука) | | `ORCH_DEPLOY_FINALIZE_MAX_ATTEMPTS` | бюджет finalize-defer | bounded (anti-livelock) | Прописать дескрипторы в `.env.example` / INFRA.md. Реальные значения не коммитить. ## 4. Сетевые / процессные требования - Detached host-процесс (ssh + setsid) обязан пережить рестарт прод-контейнера 8500. - Finalizer-job исполняется в НОВОМ контейнере после рестарта (очередь restart-safe). - MTTR авто-rollback < 60с (health-loop хука 10×6с уже укладывается, BR-8/AC-9). ## 5. Что НЕ требуется - Новых контейнеров/портов/сервисов — нет. - Изменений `docker-compose.yml` — не требуется (build-once через retag, не профиль). - Multi-node / облако / message-queue — нет (принципы проекта).