Compare commits
2 Commits
d746d3bd29
...
7ae20c2d9f
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ae20c2d9f | |||
| 2eba1c5c01 |
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
_last_updated_: 2026-05-25T11:30:00+03:00
|
_last_updated_: 2026-05-25T13:00:00+03:00
|
||||||
session_id: 2026-05-25-es-windows-to-books-vds
|
session_id: 2026-05-25-es-windows-to-books-vds
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -7,19 +7,18 @@ session_id: 2026-05-25-es-windows-to-books-vds
|
|||||||
|
|
||||||
## Recent commits
|
## Recent commits
|
||||||
|
|
||||||
- `tasks(migrate-elasticsearch-to-books-vds): 🟢 closed — 3 indices Windows→books VDS` (`3246dabb`) — session close.
|
- `tasks(iis-migration-to-ruvds): 🟢 closed Phase 1 per user decision` (`2eba1c5c`) — close.
|
||||||
- `tasks(NEXT_SESSION): finalize handoff at session close` (`97757b89`) — prev session close.
|
- `tasks(NEXT_SESSION): refresh handoff after ES migration commit` (`d746d3bd`)
|
||||||
|
- `tasks(migrate-elasticsearch-to-books-vds): 🟢 closed — 3 indices Windows→books VDS` (`3246dabb`)
|
||||||
|
- `tasks(NEXT_SESSION): finalize handoff at session close` (`97757b89`)
|
||||||
- `tasks(books-vds-stacks-to-portainer): close 🟢 — 6 stacks migrated SSH-compose → Portainer` (`86c44c3d`)
|
- `tasks(books-vds-stacks-to-portainer): close 🟢 — 6 stacks migrated SSH-compose → Portainer` (`86c44c3d`)
|
||||||
- `scripts(books-vds-portainer-migration): Phase 1 adapter ready` (`141efe97`)
|
|
||||||
- `tasks(books-vds-stacks-to-portainer): Phase 0 probe complete, +imgproxy scope` (`bfb942cd`)
|
|
||||||
|
|
||||||
## Open треки
|
## Open треки
|
||||||
|
|
||||||
| Трек | Готовность | Entry-point |
|
| Трек | Готовность | Entry-point |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `stateful-split-volume-copy` ⚪ | not started; lean playbook готов, fits real books VDS (89.253.255.133) | `.tasks/stateful-split-volume-copy.md` |
|
| `stateful-split-volume-copy` ⚪ | not started; lean playbook готов | `.tasks/stateful-split-volume-copy.md` |
|
||||||
| `iis-migration-to-ruvds` 🟡 | soak (kupimknigi + emspb DNS flipped 2026-05-24, 22 pending DNS swaps) | `.tasks/iis-migration-to-ruvds.md` |
|
| `infra-inventory` ⚪ | ready, books VDS factsheet свежий (ES + 6 Portainer стэков) — момент удачный для ingest | `.tasks/infra-inventory.md` |
|
||||||
| `infra-inventory` ⚪ | ready, не начат — **books VDS factsheet ещё свежее после ES migration**, готов к ingest в admin-detailed runbook | `.tasks/infra-inventory.md` |
|
|
||||||
| `books-bookva-user-whitelist-gathering` ⚪ | ready, long-lead gathering (email-based) | `.tasks/books-bookva-user-whitelist-gathering.md` |
|
| `books-bookva-user-whitelist-gathering` ⚪ | ready, long-lead gathering (email-based) | `.tasks/books-bookva-user-whitelist-gathering.md` |
|
||||||
| `books-vds-bookva-bootstrap` 🔵 | blocked on tenant-split Phase 4 | `.tasks/books-vds-bookva-bootstrap.md` |
|
| `books-vds-bookva-bootstrap` 🔵 | blocked on tenant-split Phase 4 | `.tasks/books-vds-bookva-bootstrap.md` |
|
||||||
| `books-dns-cutover-bookva` 🔵 | blocked on books-vds-bookva-bootstrap | `.tasks/books-dns-cutover-bookva.md` |
|
| `books-dns-cutover-bookva` 🔵 | blocked on books-vds-bookva-bootstrap | `.tasks/books-dns-cutover-bookva.md` |
|
||||||
@@ -27,28 +26,24 @@ session_id: 2026-05-25-es-windows-to-books-vds
|
|||||||
|
|
||||||
## Спроси user'а
|
## Спроси user'а
|
||||||
|
|
||||||
- **Decommission Windows ES** — когда выключаем `elasticsearch` container на windows host + удаляем traefik label `elasticold.kzntsv.site`? Source оставлен running per request, но это transient: live load теперь = 0 hits (verified 5 min post-cutover), кэш на windows host практический balast. Trigger момент — на user'е.
|
- **«потом миграции буут»** — user в этой сессии анонсировал ещё migration round. Какие конкретно? Возможные пункты исходя из контекста — другие сервисы с windows host → books VDS / vds-kzntsv (mssql? minio? ozon-seller-api-gateway?). Ask before starting.
|
||||||
- **Rollback retention** — `.bak-pre-es-migration-2026-05-25` файлы в `/opt/books/{api,task-runner,job-scheduler}/config/` стоит держать до decommission момента или дольше?
|
- **Backup re-fire post-ES-migration** — статус? (был triggered в 12:48 после ES migration close, polling task bt`btlfijyi6` ожидался). Verify через ntfy/email + log tail `/var/log/books-vds-backup/2026-05-25.log`. Если success → cron 06:00 auto-run завтра не нужен ad-hoc.
|
||||||
- **kreknin snapshot `pre-migration-2026-05-25`** (только read_me, 4.8kb) — оставить до retention rotation или явно удалить как «полезность нулевая»?
|
- **iis-migration descoped items** — нет tracker tasks для 14 plan-to-migrate hostnames, source IIS decommission, LE renewal до 2026-07-22, cleanup, wiki concept updates. Создать ⚪ tasks или оставить в Closure note? (User в этой сессии явно отказался от 3-way split.)
|
||||||
- **Какую таску брать следующей?** Хорошие кандидаты: `infra-inventory` (books VDS теперь fully documented + ES populated — момент удачный), `iis-migration-to-ruvds` (DNS TTL для 22 hostnames), `stateful-split-volume-copy` (lean playbook готов).
|
|
||||||
|
|
||||||
## Не делать (preemptive guards)
|
## Не делать (preemptive guards)
|
||||||
|
|
||||||
- **Не выключать Windows ES** (`docker stop elasticsearch` на windows host) без user'ского явного решения — это decommission step, отдельная задача.
|
- **Не plод follow-up tasks для iis-migration descoped items** без явного user request — user в этой сессии отверг 3-way split, всё в Closure note таски.
|
||||||
- **Не редактировать `/opt/books/<svc>/config/default.json`** напрямую без `cp <file>.bak-<date>` перед — bind-mounted, change live для приложения; восстановление только через .bak копии.
|
- **Не trigger reg.ru DNS swap для 14 plan-to-migrate hostnames** — нет API key в pass, ручная операция user'а.
|
||||||
- **Не удалять `reindex.remote.whitelist`** из target ES env в Portainer stack 33 — harmless idle, может пригодиться для будущих re-imports.
|
- **Не decommission source Windows IIS** (port 8089 + traefik routes) — 16 hostnames всё ещё указывают на 94.19.247.14, decommission = downtime для них.
|
||||||
- **Не push без grant** — auto-push grant был session-only (Rule 4). Next session start = ask-mode again.
|
- **Не выключать Windows ES** (`docker stop elasticsearch` на windows host) — source держится per user request как rollback после ES migration.
|
||||||
- **Не migrate traefik / portainer** на books VDS — management plane, recreate ломает access.
|
- **Не редактировать `/opt/books/<svc>/config/default.json`** напрямую без `cp <file>.bak-<date>` перед — bind-mounted, change live для приложения.
|
||||||
- **Не trust `https://elasticsearch.kzntsv.site/`** без basicAuth — endpoint behind traefik middleware `elasticsearch-auth`, user `books`. Pwd живёт в `/opt/books/api/config/default.json` (не в pass entry yet).
|
- **Не push без grant в next session** — auto-push grant был session-only (Rule 4). В этой сессии user разово grant'нул на `пуш` (single commit) — следующий push потребует нового grant.
|
||||||
|
- **Не trust `https://elasticsearch.kzntsv.site/`** без basicAuth — endpoint behind traefik middleware. Pwd живёт в `/opt/books/api/config/default.json` (НЕ в pass entry).
|
||||||
|
|
||||||
## Memory updates за сессию
|
## Memory updates за сессию
|
||||||
|
|
||||||
- **Учить:** `pass show books-vds/full-env` НЕ содержит ES basicAuth pwd. Pwd живёт в самих consumer configs `/opt/books/<svc>/config/default.json` (key `elasticsearch.auth.password`). Source basicAuth hash = target basicAuth hash → один password покрывает оба endpoint'а.
|
- **Учить:** на closure-time всегда run актуальный DNS probe для migration tasks с DNS scope — task file может lag user'ского background swap'а (в этой сессии user silently swap'нул 5 пар hostnames между `2026-05-24` cutover и `2026-05-25` closure, task file showed 2 swapped, real was 9).
|
||||||
- **Учить:** `path.repo` + `reindex.remote.whitelist` — это **static** ES settings, требуют env vars + container restart. НЕ показываются в `_cluster/settings?include_defaults=true` (только dynamic settings). Verify через `docker inspect <container> --format '{{range .Config.Env}}{{println .}}{{end}}'`.
|
- **Учить:** ES kreknin daily snapshot `daily-<date>` — script `set -e` fails если `daily-<date>` уже exists в repo (idempotent НЕ). Re-fire backup в тот же день → `DELETE _snapshot/kreknin/daily-<date>?pretty` сначала.
|
||||||
- **Учить:** ES `_reindex` from remote НЕ поддерживает `slices` (manual или auto). Single-threaded scroll → bulk. Для 700mb / 820k docs over public network — ~5 мин. Для 105k docs products (мелкие 549 bytes/doc) — ~25 мин (per-doc HTTP overhead). artmone 2621 docs — 25s (sync).
|
- **Учить:** user pattern для «закрой хорошо» = **finish properly, descope cleanly в Closure note** (НЕ create follow-up tasks). Несколько раз: ES migration close + iis-migration close — same shape. Closure notes capture what's NOT done без proliferating board state.
|
||||||
- **Учить:** ES `_search` `total` capped по умолчанию `track_total_hits=10000` в 7.x. Для accurate count — `?track_total_hits=true` или просто `/<index>/_count`.
|
- **Reference:** [[../.tasks/iis-migration-to-ruvds]] § Closure note — descope details для 5 categories of remaining work + rollback recipe.
|
||||||
- **Учить:** Portainer-managed stack env update через `PUT /api/stacks/<id>?endpointId=1` с body `{stackFileContent, env, prune, pullImage}`. Recreate происходит автоматически. Verify по `docker inspect ... StartedAt` change.
|
- **Reference:** [[../.tasks/migrate-elasticsearch-to-books-vds]] § Closure note — rollback recipe.
|
||||||
- **Учить:** `python3` НЕ работает в git-bash на windows (запускает Windows Store launcher → exit 49, печатает "Python"). `python` — works (PATH'е есть Python 3.13). При heredoc + `2>&1` всё иногда падает silently — лучше прямой `python -c "..."` или `python <<'PY'`.
|
|
||||||
- **Учить:** Windows PS `Invoke-WebRequest` НЕ имеет `-SkipCertificateCheck` в 5.1. PS 7 имеет. На этой машине — PS 5.1, поэтому для self-signed/auth checks использовать curl через bash.
|
|
||||||
- **Reference:** task chronology — [[.tasks/migrate-elasticsearch-to-books-vds]] § Closure note (rollback recipe + decommission notes).
|
|
||||||
- **Reference:** books VDS entity wiki [[.wiki/entities/books-vds]] обновлён 2026-05-25 — stack 33 теперь reflects env additions + ES indices populated note в Making-of-history.
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Admin Task Board
|
# Admin Task Board
|
||||||
_Updated: 2026-05-25 (`migrate-elasticsearch-to-books-vds` 🟢 closed — 3 indices (artmone/epz/products) с Windows host → books VDS ES via reindex-from-remote. 928k docs total, count parity 100%, per-doc byte-match. Consumers switched (books-api + books-task-runner + books-job-scheduler). Source ES остаётся running per user — rollback ready.)_
|
_Updated: 2026-05-25 (`iis-migration-to-ruvds` 🟢 closed Phase 1 per user decision — 9/24 hostnames live на RUVDS, source IIS оставлен running. `migrate-elasticsearch-to-books-vds` 🟢 closed ранее сегодня. 16 IIS hostnames + LE renewal pipeline + decommission — descoped в Closure note, не отдельные tracker tasks.)_
|
||||||
|
|
||||||
## 🟢 [migrate-elasticsearch-to-books-vds] — closed 2026-05-25 — ES indices с Windows (elasticold.kzntsv.site, 7.10.1) → books VDS (elasticsearch.kzntsv.site, 7.10.0). 3 indices, 928616 docs. Reindex-from-remote через `reindex.remote.whitelist` env, добавленный в Portainer stack 33. Pre-migration snapshot в kreknin repo как rollback. Consumer configs sed'd, 3 containers restarted, smoke green. Source НЕ выключен.
|
## 🟢 [migrate-elasticsearch-to-books-vds] — closed 2026-05-25 — ES indices с Windows (elasticold.kzntsv.site, 7.10.1) → books VDS (elasticsearch.kzntsv.site, 7.10.0). 3 indices, 928616 docs. Reindex-from-remote через `reindex.remote.whitelist` env, добавленный в Portainer stack 33. Pre-migration snapshot в kreknin repo как rollback. Consumer configs sed'd, 3 containers restarted, smoke green. Source НЕ выключен.
|
||||||
|
|
||||||
@@ -38,10 +38,12 @@ Ops-таска для Фазы 1 дизайна `tenant-split` из victor/books
|
|||||||
🟢 Done — moved to ARCHIVE.md once committed
|
🟢 Done — moved to ARCHIVE.md once committed
|
||||||
🔵 Blocked — waiting on external input
|
🔵 Blocked — waiting on external input
|
||||||
-->
|
-->
|
||||||
## 🟡 [iis-migration-to-ruvds] — RUVDS IIS live для 2 prod hostnames (kupimknigi + emspb flipped); 22 в очереди. tandemmebel.ru остаётся на windows-IIS отдельно. Source held для rollback.
|
## 🟢 [iis-migration-to-ruvds] — closed 2026-05-25 per user decision — Phase 1 done: RUVDS infra setup + 8.66GB scp + IIS recreate + 25 HTTPS SNI bindings (LE R13 expire 2026-07-22) + 9 hostnames (kupimknigi.spb.ru, emspb±www, pilorama98±www, labtools.pro±www, rimiz±www) live на 80.64.31.36 with correct per-tenant content. 16 hostnames остаются на windows source per user pace (incl. tandemmebel scope-exception). Source IIS:8089 + traefik routes ALIVE для rollback. Decommission + LE renewal + cleanup descoped в Closure note. См. [iis-migration-to-ruvds.md](iis-migration-to-ruvds.md) § Closure note.
|
||||||
|
|
||||||
**Status:** in_progress (DNS partial cutover — soak window 2026-05-24)
|
<!-- HISTORICAL details preserved below — task closed, content kept до prune'а board'а -->
|
||||||
**Where I stopped:** 2026-05-24 — `kupimknigi.spb.ru` + `emspb.ru` (+ `www.emspb.ru`) DNS A flipped на `80.64.31.36`, authoritative `ns1.reg.ru` правильный, public resolver caches expire'ятся (8.8.8.8=~6h, 1.1.1.1=~24h max). RUVDS state: snolla site (8.66 GB / 44725 files) transferred + IIS recreated + 25 HTTPS SNI bindings c LE certs (R13, valid до 2026-07-22), 7 prod hostnames live-smoke через VDS (третья сеть) → 200 OK / correct content. Source IIS:8089 + traefik routes ALIVE — rollback ready.
|
|
||||||
|
**Status:** closed 2026-05-25
|
||||||
|
**Where I stopped:** 2026-05-24 — `kupimknigi.spb.ru` + `emspb.ru` (+ `www.emspb.ru`) DNS A flipped на `80.64.31.36`, authoritative `ns1.reg.ru` правильный, public resolver caches expire'ятся (8.8.8.8=~6h, 1.1.1.1=~24h max). RUVDS state: snolla site (8.66 GB / 44725 files) transferred + IIS recreated + 25 HTTPS SNI bindings c LE certs (R13, valid до 2026-07-22), 7 prod hostnames live-smoke через VDS (третья сеть) → 200 OK / correct content. Source IIS:8089 + traefik routes ALIVE — rollback ready. **2026-05-25 close-time DNS probe:** ещё 5 пар hostnames swap'нуты user'ом silently — итого 9 на RUVDS, 16 на source.
|
||||||
**Findings зафиксированы в** [iis-migration-to-ruvds.md](iis-migration-to-ruvds.md) Decisions log: (1) outbound 445 блокирует home ISP, не RUVDS-FW → SSH/scp = canonical transfer-метод; (2) home network HTTP-middlebox mangles Host header for direct external HTTP — real end-users не пострадают, тестировать через VDS; (3) traefik acme.json → IIS PFX recipe работает (extract + openssl pkcs12 -export + Import-PfxCertificate + AddSslCertificate by thumbprint); (4) IIS 10 HTTP/2 default; (5) `maljarka.tandemmebel.ru` + 3 rimiz hostnames → 502/404 — pre-existing CMS-tenant config gap, не migration defect.
|
**Findings зафиксированы в** [iis-migration-to-ruvds.md](iis-migration-to-ruvds.md) Decisions log: (1) outbound 445 блокирует home ISP, не RUVDS-FW → SSH/scp = canonical transfer-метод; (2) home network HTTP-middlebox mangles Host header for direct external HTTP — real end-users не пострадают, тестировать через VDS; (3) traefik acme.json → IIS PFX recipe работает (extract + openssl pkcs12 -export + Import-PfxCertificate + AddSslCertificate by thumbprint); (4) IIS 10 HTTP/2 default; (5) `maljarka.tandemmebel.ru` + 3 rimiz hostnames → 502/404 — pre-existing CMS-tenant config gap, не migration defect.
|
||||||
|
|
||||||
**Scope exception (2026-05-24 user decision):** `tandemmebel.ru` + `www.tandemmebel.ru` ОСТАЮТСЯ на windows-IIS на неопределённый срок (отдельное решение user'а — site не готов к cutover ровно сейчас). DNS НЕ свапать. Cert на RUVDS уже импортирован, binding existing — может оставаться idle, traffic не пойдёт.
|
**Scope exception (2026-05-24 user decision):** `tandemmebel.ru` + `www.tandemmebel.ru` ОСТАЮТСЯ на windows-IIS на неопределённый срок (отдельное решение user'а — site не готов к cutover ровно сейчас). DNS НЕ свапать. Cert на RUVDS уже импортирован, binding existing — может оставаться idle, traffic не пойдёт.
|
||||||
|
|||||||
@@ -57,6 +57,11 @@ Migrate IIS hosting from [[../entities/windows-recovery-host]] (DESKTOP-NSEF0UK)
|
|||||||
- **2026-05-24 ~12:00 (second cutover):** `emspb.ru` + `www.emspb.ru` DNS flipped на 80.64.31.36 (1.1.1.1 + Yandex + reg.ru уже отдают новое, 8.8.8.8 кешировал старое). Smoke через --resolve и через partially-cached real DNS → 200 OK c correct content.
|
- **2026-05-24 ~12:00 (second cutover):** `emspb.ru` + `www.emspb.ru` DNS flipped на 80.64.31.36 (1.1.1.1 + Yandex + reg.ru уже отдают новое, 8.8.8.8 кешировал старое). Smoke через --resolve и через partially-cached real DNS → 200 OK c correct content.
|
||||||
- **2026-05-24 (scope narrow):** user-decision — `tandemmebel.ru` + `www.tandemmebel.ru` ОСТАЮТСЯ на windows-IIS на неопределённый срок. Cert на RUVDS уже импортирован, HTTPS binding existing — но DNS не свапаем. Source IIS `snolla` site нельзя decommission'ить пока tandemmebel на нём же (catch-all binding). Это разделяет migration на 24 hostnames мигрируют, 2 (`tandemmebel.ru` + www) остаются. Future migration tandemmebel — отдельная задача когда user решит.
|
- **2026-05-24 (scope narrow):** user-decision — `tandemmebel.ru` + `www.tandemmebel.ru` ОСТАЮТСЯ на windows-IIS на неопределённый срок. Cert на RUVDS уже импортирован, HTTPS binding existing — но DNS не свапаем. Source IIS `snolla` site нельзя decommission'ить пока tandemmebel на нём же (catch-all binding). Это разделяет migration на 24 hostnames мигрируют, 2 (`tandemmebel.ru` + www) остаются. Future migration tandemmebel — отдельная задача когда user решит.
|
||||||
- **MinIO pipeline caveat (carry-over от `[iis-cutover-to-vds-services]`):** RUVDS IIS coupled к windows-host imgproxy через DNS `imgproxy.kzntsv.site`. SPOF home machine остаётся для image-rendering. Verified post-migration: `Test-NetConnection imgproxy.kzntsv.site -Port 443` с RUVDS = OK. Image pipeline working but не resilient.
|
- **MinIO pipeline caveat (carry-over от `[iis-cutover-to-vds-services]`):** RUVDS IIS coupled к windows-host imgproxy через DNS `imgproxy.kzntsv.site`. SPOF home machine остаётся для image-rendering. Verified post-migration: `Test-NetConnection imgproxy.kzntsv.site -Port 443` с RUVDS = OK. Image pipeline working but не resilient.
|
||||||
|
- **2026-05-25 (close-time DNS probe):** между cutover'ом 2026-05-24 и closure user тихо swap'нул ещё 5 пар hostnames через reg.ru. Реальное DNS состояние на 2026-05-25 11:30 MSK через `Resolve-DnsName -Server 8.8.8.8`:
|
||||||
|
- **На RUVDS 80.64.31.36** (9): `kupimknigi.spb.ru`, `emspb.ru` + `www.emspb.ru`, `pilorama98.ru` + `www.pilorama98.ru`, `labtools.pro` + `www.labtools.pro`, `rimiz.ru` + `www.rimiz.ru`. TTL на swap'нутых: 3600s (auth ns1.reg.ru).
|
||||||
|
- **На windows source 94.19.247.14** (16): `labtools.ru` + `www.labtools.ru`, `snolla.com` + 12× *.snolla.com (incl `rimiz.snolla.com`), `maljarka.tandemmebel.ru`, `tandemmebel.ru` + `www.tandemmebel.ru` (scope exception). TTL 86400s — не lowered.
|
||||||
|
- **Live smoke** через real DNS: `kupimknigi.spb.ru`/`www.emspb.ru`/`www.pilorama98.ru`/`www.labtools.pro` → 200 OK + correct per-tenant title. Bare-domain 3 redirects работают (emspb/pilorama98/labtools.pro). `rimiz.ru` / `www.rimiz.ru` → 404 — pre-existing CMS-defect (тоже 404 на source), не migration regression.
|
||||||
|
- **2026-05-25 (close decision):** user-decision close — несмотря на 16 hostnames pending DNS swap + source IIS:8089 still live + LE renewal pipeline pending + cleanup pending, **task закрывается** на этом этапе. Reason: Phase 1 (RUVDS infra + scp + IIS recreate + cert import + 9 DNS swaps) выполнен и live; остальное — coordination/wait/decommission character, не agent-work load. Future actions перечислены в Closure note ниже, не trackable как `iis-migration-to-ruvds` continuation.
|
||||||
|
|
||||||
## Open questions
|
## Open questions
|
||||||
|
|
||||||
@@ -84,18 +89,39 @@ Migrate IIS hosting from [[../entities/windows-recovery-host]] (DESKTOP-NSEF0UK)
|
|||||||
- [x] **2026-05-23 23:35:** 7 prod hostnames live-smoked through VDS → 200 OK / correct content; 4 hostnames degraded pre-migration (acceptable).
|
- [x] **2026-05-23 23:35:** 7 prod hostnames live-smoked through VDS → 200 OK / correct content; 4 hostnames degraded pre-migration (acceptable).
|
||||||
- [x] **2026-05-24 ~00:00:** DNS swap kupimknigi.spb.ru → 80.64.31.36 (initial misroute to VDS corrected).
|
- [x] **2026-05-24 ~00:00:** DNS swap kupimknigi.spb.ru → 80.64.31.36 (initial misroute to VDS corrected).
|
||||||
|
|
||||||
## Remaining steps (post-soak)
|
## Closure note (2026-05-25)
|
||||||
|
|
||||||
- [ ] Verify kupimknigi.spb.ru через cache-clean resolver (после TTL expiry на 8.8.8.8 / 1.1.1.1) — должно показывать RUVDS content в браузере без `--resolve` override.
|
Task **closed 🟢** per user decision. Phase 1 — RUVDS infra + cert pipeline + 9 hostnames live — done.
|
||||||
- [ ] **Lower DNS TTL** в reg.ru на остальные 24 hostnames до 300s. Можно сделать сразу — обновит cache в ближайшие 24h, после этого swap пойдёт быстро.
|
|
||||||
- [ ] DNS swap (через reg.ru) остальных 24 hostnames на `80.64.31.36`.
|
**Что НЕ сделано** (не теряем — записано здесь, не в STATUS.md):
|
||||||
- [ ] 1-неделя soak с RUVDS как live prod.
|
|
||||||
- [ ] Decommission source IIS:8089 + traefik routes для CMS-hostnames (но не traefik сам — много других routes остаётся).
|
1. **16 hostnames still DNS на windows source** (94.19.247.14). Из них:
|
||||||
- [ ] Cleanup: `Remove-NetFirewallRule -DisplayName 'smb-from-source'` (already-unused) + `ssh-from-source` (после disable temp key) + удалить `~/.ssh/ruvds-iis-migration*` keys + удалить `C:\ProgramData\ssh\administrators_authorized_keys` на RUVDS.
|
- 14 plan to migrate later: `labtools.ru` + `www.labtools.ru`, `snolla.com` + 12× *.snolla.com (incl `rimiz.snolla.com`, `maljarka.tandemmebel.ru`).
|
||||||
- [ ] LE renewal pipeline (см. Open questions).
|
- 2 scope-exception: `tandemmebel.ru` + `www.tandemmebel.ru` — stays на windows-IIS до отдельного решения user'а.
|
||||||
- [ ] Concept update — `windows-server-2025-core-bootstrap.md` SMB-section deprecate в пользу SSH/scp, добавить host-header-middlebox warning, добавить HTTP/2 note.
|
- Action: user manually swap A-records в reg.ru → 80.64.31.36 при готовности. Recommend pre-step: lower TTL 86400s → 300s in advance to shrink cache-tail.
|
||||||
- [ ] New concept — `traefik-acme-json-to-iis-cert-import.md` (recipe экспорта-импорта).
|
- Нет reg.ru API key в pass entries — agent НЕ может сделать swap autonomously.
|
||||||
- [ ] Source-info commit — записать что image-pipeline SPOF остался → отдельная task.
|
|
||||||
|
2. **Source IIS НЕ decommission'ен.** `localhost:8089` snolla site + port 80 catch-all still live на windows-recovery-host. Не трогать пока 16 hostnames на 94.19.247.14. После full cutover + 7-day soak — `Stop-Website snolla` + archive `C:\sites\snolla` (8.66GB) → kreknin.
|
||||||
|
|
||||||
|
3. **LE renewal pipeline НЕ построен.** Текущие RUVDS PFX certs valid до 2026-07-22 (~57 days от 2026-05-25). До этой даты нужен renewal-mechanism:
|
||||||
|
- Recommend: win-acme на RUVDS + HTTP-01 challenge — **возможно только после full DNS cutover** (HTTP-01 bounce'нется на windows source pre-cutover, LE не сможет verify owners).
|
||||||
|
- Soft deadline: ~2026-07-15 (week of margin до cert expiry).
|
||||||
|
|
||||||
|
4. **Temp SSH key cleanup не сделан.** Оставлены (могут понадобиться для будущих push'ей на RUVDS):
|
||||||
|
- `~/.ssh/ruvds-iis-migration` + `.pub` на source workstation
|
||||||
|
- FW rule `ssh-from-source` + `smb-from-source` на RUVDS
|
||||||
|
- `C:\ProgramData\ssh\administrators_authorized_keys` на RUVDS
|
||||||
|
- Action defer до post-decommission.
|
||||||
|
|
||||||
|
5. **Wiki concept updates не сделаны** (low-priority, value beyond this task):
|
||||||
|
- `.wiki/concepts/windows-server-2025-core-bootstrap.md` — SMB section deprecate, add HTTP-middlebox warning + HTTP/2 note.
|
||||||
|
- New `.wiki/concepts/traefik-acme-json-to-iis-cert-import.md` — recipe extract+pkcs12+Import-PfxCertificate+AddSslCertificate.
|
||||||
|
|
||||||
|
6. **CMS-defect rimiz / maljarka** — 4 hostnames 502/404 pre-existing, не migration regression. На source ровно так же. Investigation отдельная история, не блокирует closure.
|
||||||
|
|
||||||
|
**Image-pipeline SPOF carry-forward:** RUVDS IIS зависит от `imgproxy.kzntsv.site` (windows-host imgproxy). SPOF home machine для image-rendering. Не решено в этой migration — задокументировано как separate `image-pipeline-resilience` (см. brainstorm option B local nginx-relay / option D decompile DLL — defer).
|
||||||
|
|
||||||
|
**Rollback (если RUVDS пропадает):** revert A-records 9 swapped hostnames в reg.ru на 94.19.247.14. Source IIS:8089 + traefik routes live = instant fallback.
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user