feat(deploy): полный набор скриптов миграции на Astra Linux

Поскольку Интеграционный шлюз НРД (ИШ) официально работает только на
Astra Linux SE 1.6/1.7 (RPM-версии нет, дистрибутив только .deb для
Debian-based), мигрируем инфраструктуру с РЕД ОС на Astra. Это
заодно проверит «чистую» установку с нуля.

deploy/astra/install.sh — установщик bj-server для свежей Astra ВМ:
- проверка ОС (Astra Linux SE)
- apt-зависимости (curl, git, podman, podman-compose, postgresql-client)
- скачивание Go 1.24+ с go.dev, если нет
- системный пользователь bj + каталоги /opt/bj /var/lib/bj /var/log/bj
- git clone репо в /opt/bj/src
- go build бинарника /opt/bj/bj-server
- podman-compose up -d postgres + накат всех миграций
- systemd unit с безопасными ограничениями (NoNewPrivileges,
  ProtectSystem=strict, ReadWritePaths только нужные, PrivateTmp)
- автозапуск + проверка systemctl is-active
- финальная подсказка с URL'ами

deploy/astra/install-validata.sh — установщик Валидата CSP:
- ищет .deb пакеты в dist/validata/ или принимает путь аргументом
- если пакетов нет — печатает текст письма для запроса дистрибутива
  у НРД (soed@nsd.ru) или МБ (pki@moex.com)
- dpkg -i + apt-get install -f для зависимостей
- проверка установки в /opt/Validata*

deploy/astra/install-ish.sh — установщик ИШ:
- ищет igate_*_amd64.deb в стандартных местах (dist/ish/, ~/Downloads и т.п.)
- проверяет наличие Валидаты (предупреждает если нет)
- dpkg -i igate_*.deb
- подсказывает следующие шаги (запуск GUI, настройка БД и канала WSL)

deploy/astra/migrate-from-redos.sh — экспорт со старой РЕД ОС ВМ:
- pg_dump БД bj (через podman exec или напрямую)
- копия ~/.bj/setup.json (ищется в нескольких стандартных путях)
- последние 7 дней логов из /var/log/bj и journalctl
- meta.txt с версиями ОС/пакетов
- README.md с инструкциями восстановления на новой ВМ
- итоговый тарбол /tmp/bj-migration-YYYY-MM-DD-HHMM.tar.gz

deploy/astra/healthcheck.sh — проверка после установки:
- 8 разделов: ОС, пользователь/каталоги, systemd, HTTP, PostgreSQL,
  Валидата, ИШ, сетевые порты
- цветной вывод OK/WARN/FAIL для каждого пункта

deploy/astra/README.md — пошаговая инструкция миграции из 8 этапов:
- подготовка (Astra ВМ, доступ root, запрос Валидаты у НРД)
- экспорт со старой ВМ
- install.sh на новой ВМ
- restore БД и настроек
- healthcheck
- install-validata.sh + импорт сертификатов УЦ МБ
- install-ish.sh + настройка канала WSL
- первый тест с роботом MOEX МОСТ
- раздел «что НЕ переносится автоматически»
- раздел «откат» (старая ВМ работает до подтверждения миграции)

REPORT.md обновлён:
- общая готовность 72% → 75%
- готовность к роботу 85% → 88%
- новая строка «Установщик/мигратор на Astra Linux: 100% »
- «Установка ИШ на наш стенд» поднялась с 0% до 30%
This commit is contained in:
fontvielle
2026-05-14 17:37:10 +03:00
parent 7a7aa0cf6c
commit bac55cbdfd
7 changed files with 835 additions and 3 deletions
+139
View File
@@ -0,0 +1,139 @@
# Миграция Bridge-and-Join-s на Astra Linux
Полный набор скриптов для **чистой установки с нуля** на свежей
Astra Linux Special Edition 1.6/1.7 ВМ и переноса данных со старой
РЕД ОС.
## Зачем мигрируем
Интеграционный шлюз НРД (ИШ) — единственный поддерживаемый канал к
сервису MOEX МОСТ — официально работает только на **Astra Linux**
(дистрибутив `igate_100.0-765_amd64.deb`). РЕД ОС в списке поддерживаемых
ОС отсутствует, RPM-версии ИШ нет. Поэтому всю инфраструктуру
переводим на Astra.
Кроме того, ИШ требует СКЗИ **«Валидата CSP»** (НЕ КриптоПро) —
этот переход тоже происходит в рамках миграции.
## Файлы в этом каталоге
| Файл | Где запускать | Назначение |
|---|---|---|
| `install.sh` | новая Astra ВМ (root) | Установка bj-server (зависимости, Go, podman, postgres, бинарник, systemd) |
| `install-validata.sh` | новая Astra ВМ (root) | Установка СКЗИ Валидата CSP + АПК Валидата Клиент L (после получения дистрибутива от НРД) |
| `install-ish.sh` | новая Astra ВМ (root) | Установка ИШ (`dpkg -i igate_*.deb`) |
| `migrate-from-redos.sh` | старая РЕД ОС ВМ | Экспорт состояния (БД, настройки, логи) в архив для переноса |
| `healthcheck.sh` | новая Astra ВМ | Проверка состояния всех компонентов после установки |
## Пошаговый план миграции
### Этап 1. Подготовка
- [ ] Поднять чистую Astra Linux SE 1.7 ВМ (рекомендую 10.10.10.23)
- [ ] Доступ root по SSH
- [ ] Прямой выход в интернет (для скачивания Go и зависимостей)
- [ ] Параллельно отправить письмо в НРД (`soed@nsd.ru`) с запросом
дистрибутива Валидаты под Linux + временной лицензии
### Этап 2. Экспорт со старой ВМ (РЕД ОС)
```bash
# на старой ВМ
ssh fontvielle@10.10.10.22
cd ~/Bridge-and-Join-s
sudo bash deploy/astra/migrate-from-redos.sh
# создаст /tmp/bj-migration-YYYY-MM-DD-HHMM.tar.gz
```
### Этап 3. Установка bj-server на новую ВМ (Astra Linux)
```bash
# на новой Astra ВМ
ssh root@10.10.10.23
# вариант А — через git
curl -sSL https://git.zetit.ru/zuevav/Bridge-and-Join-s/raw/main/deploy/astra/install.sh \
| sudo bash
# вариант Б — локально (если уже скопировал репо)
cd /opt/bj/src
sudo bash deploy/astra/install.sh
```
### Этап 4. Перенос данных
```bash
# перекинуть архив на новую ВМ
scp /tmp/bj-migration-*.tar.gz root@10.10.10.23:/tmp/
# на новой ВМ
cd /tmp
tar -xzf bj-migration-*.tar.gz
cd bj-migration-*
# восстановить БД
podman exec -i bj-postgres psql -U bj -d bj < bj.sql
# восстановить настройки
sudo cp setup.json /var/lib/bj/.bj/setup.json
sudo chown bj:bj /var/lib/bj/.bj/setup.json
sudo chmod 0600 /var/lib/bj/.bj/setup.json
sudo systemctl restart bj-server
```
### Этап 5. Проверка
```bash
sudo bash /opt/bj/src/deploy/astra/healthcheck.sh
```
Открыть в браузере: `http://10.10.10.23:8080/admin/`
### Этап 6. Установка ИШ (после получения дистрибутивов от НРД)
```bash
# 1. Валидата (когда придёт от НРД)
sudo bash deploy/astra/install-validata.sh /path/to/validata-csp.deb
# 2. Импорт сертификатов УЦ МБ через GUI Справочника Валидаты:
# - корневой сертификат УЦ МБ
# - пользовательский сертификат с приватным ключом
# - Сервис → Экспортировать в системное хранилище
# 3. Сам ИШ (дистрибутив уже скачан в dist/ish/)
sudo bash deploy/astra/install-ish.sh
# 4. Настроить канал WSL в ИШ (GUI):
# URL: https://gost.nsd.ru/onyxt3/WslService (TEST3)
# Сертификат: из системного хранилища
# БД: PostgreSQL (тот же что и bj-server)
# 5. Запустить ИШ как сервис
sudo systemctl enable --now igate
```
### Этап 7. Привязка bj-server к ИШ
В админке `http://10.10.10.23:8080/admin/setup` → «Интеграционный шлюз НРД»:
- URL ИШ: `http://localhost:8090` (REST API ИШ)
- Имя канала: тот что создали в ИШ на шаге 6
### Этап 8. Первый тест с роботом
```bash
# Через UI: /admin/setup → «Тестовый прогон сквозной заявки»
# Это отправит заявку с ReceiverCode=MC0012500000 и DocumentSeries=2001
# → робот НРД ответит «Принять все бумаги» через ~30 сек
```
## Откат
Старая РЕД ОС ВМ продолжает работать до подтверждения миграции.
Если что-то пойдёт не так — просто переключаем DNS/Nginx обратно на 10.10.10.22.
## Что НЕ переносится автоматически
| Что | Почему | Что делать |
|---|---|---|
| КриптоПро CSP | На Astra используется Валидата | Получить дистрибутив Валидаты у НРД, поставить заново |
| Сертификаты в `/var/opt/cprocsp/keys/` | Формат КриптоПро ≠ формат Валидаты | Сертификат УЦ МБ — получить заново или экспортировать с КриптоПро и импортировать в Валидата (если совместимый формат) |
| Локальные кастомизации systemd | install.sh ставит свой unit | Сравнить /etc/systemd/system/bj-server.service до/после |
## Если что-то сломалось
1. Логи bj-server: `journalctl -u bj-server -f`
2. Файл лога: `tail -f /var/log/bj/bj-server.log`
3. Логи ИШ: `journalctl -u igate -f` (если запущен как systemd)
4. Health-check: `sudo bash deploy/astra/healthcheck.sh`
5. Поддержка НРД по ИШ/Валидате: `soed@nsd.ru`, по форматам M2M: `M2MOST@nsd.ru`