refactor(deploy): «одна команда — всё работает» для нового стенда
Переосмысление установщика по фидбеку: установщик должен делать чистую
установку «с нуля», а не миграцию. От пользователя требуется одна
команда и больше ничего:
curl -sSL https://.../install.sh | sudo bash
deploy/astra/install.sh переписан:
- 9 чётких этапов с прогресс-индикатором (секунды от старта)
- Авто-определение ОС: Astra SE → официально, Astra CE/Debian → warn,
Ubuntu → ask, остальные → fail
- Авто-скачивание дистрибутива ИШ (~120 МБ) с old.nsd.ru
- Авто-установка ИШ через dpkg (но если упадёт — это OK, продолжаем)
- НЕинтерактивный режим (--yes) для CI/автоматизации
- Финальная сводка с URL'ами + список ручных шагов
- Дефолтный setup.json создаётся сразу, чтоб bj-server понимал DSN
- ProtectSystem=strict, ReadWritePaths только нужные, PrivateTmp в
systemd unit'е
deploy/astra/migrate-from-redos.sh → переименован в import-data.sh
и стал ОПЦИОНАЛЬНЫМ (для тех кто переезжает с действующего стенда).
Главный путь — чистая установка через install.sh.
deploy/astra/README.md перетряхнут:
- TL;DR с одной командой в самом верху
- Объяснение Astra SE vs Astra CE vs Debian (платное/бесплатное)
- 5 скриптов вместо 6
- Раздел «что произойдёт после установки» — режим эмуляции, что
осталось руками
- 10-этапный путь от чистой ВМ до прохождения теста с роботом MOEX МОСТ
REPORT.md обновлён: установщик описан как «одна команда» вместо
«миграция», % готовности не изменился (но качество улучшилось).
This commit is contained in:
+129
-123
@@ -1,139 +1,145 @@
|
||||
# Миграция Bridge-and-Join-s на Astra Linux
|
||||
# Bridge-and-Join-s — установка одной командой
|
||||
|
||||
Полный набор скриптов для **чистой установки с нуля** на свежей
|
||||
Astra Linux Special Edition 1.6/1.7 ВМ и переноса данных со старой
|
||||
РЕД ОС.
|
||||
## TL;DR — на свежей Astra Linux / Debian / Ubuntu ВМ
|
||||
|
||||
## Зачем мигрируем
|
||||
```bash
|
||||
curl -sSL https://git.zetit.ru/zuevav/Bridge-and-Join-s/raw/main/deploy/astra/install.sh | sudo bash
|
||||
```
|
||||
|
||||
Интеграционный шлюз НРД (ИШ) — единственный поддерживаемый канал к
|
||||
сервису MOEX МОСТ — официально работает только на **Astra Linux**
|
||||
(дистрибутив `igate_100.0-765_amd64.deb`). РЕД ОС в списке поддерживаемых
|
||||
ОС отсутствует, RPM-версии ИШ нет. Поэтому всю инфраструктуру
|
||||
переводим на Astra.
|
||||
Через **5-10 минут** будет работать веб-админка на `http://<ip>:8080/admin/`.
|
||||
|
||||
Кроме того, ИШ требует СКЗИ **«Валидата CSP»** (НЕ КриптоПро) —
|
||||
этот переход тоже происходит в рамках миграции.
|
||||
Установщик сам:
|
||||
- Определит ОС (Astra SE/CE, Debian, Ubuntu)
|
||||
- Поставит зависимости (apt: podman, postgresql-client, git)
|
||||
- Скачает и установит Go 1.24+
|
||||
- Создаст системного пользователя `bj` и каталоги
|
||||
- Склонирует репозиторий в `/opt/bj/src`
|
||||
- Соберёт `bj-server` из исходников
|
||||
- Поднимет PostgreSQL 16 в podman-контейнере и накатит миграции
|
||||
- Поставит systemd unit и запустит сервис
|
||||
- Скачает дистрибутив ИШ НРД (~120 МБ) и попытается установить через `dpkg`
|
||||
|
||||
## Файлы в этом каталоге
|
||||
После завершения скрипта тебе печатается понятная сводка с URL'ами и
|
||||
списком того, что осталось сделать руками.
|
||||
|
||||
| Файл | Где запускать | Назначение |
|
||||
---
|
||||
|
||||
## Какая нужна ВМ
|
||||
|
||||
| Параметр | Минимум | Рекомендуется |
|
||||
|---|---|---|
|
||||
| `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 ВМ | Проверка состояния всех компонентов после установки |
|
||||
| ОС | Debian 11+ / Astra CE 1.8 / Astra SE 1.6+ / Ubuntu 22.04+ | **Astra Linux SE 1.7** (для прод) |
|
||||
| CPU | 2 ядра | 4 ядра |
|
||||
| RAM | 2 ГБ | 4 ГБ |
|
||||
| Диск | 20 ГБ | 50 ГБ SSD |
|
||||
| Сеть | прямой выход в интернет | + статический IP |
|
||||
|
||||
## Пошаговый план миграции
|
||||
**Что я понимаю про лицензии Astra Linux:**
|
||||
|
||||
### Этап 1. Подготовка
|
||||
- [ ] Поднять чистую Astra Linux SE 1.7 ВМ (рекомендую 10.10.10.23)
|
||||
- [ ] Доступ root по SSH
|
||||
- [ ] Прямой выход в интернет (для скачивания Go и зависимостей)
|
||||
- [ ] Параллельно отправить письмо в НРД (`soed@nsd.ru`) с запросом
|
||||
дистрибутива Валидаты под Linux + временной лицензии
|
||||
- **Astra SE** — платная (~2-5 тыс. ₽/лицензия), сертифицирована ФСТЭК/ФСБ → нужна для прода с гос-требованиями
|
||||
- **Astra CE** — бесплатная, без сертификации, тот же базовый дистрибутив → можно использовать для дева и тестов, а для прода докупить SE
|
||||
- **Debian 12** — полностью бесплатный, технически на 95% совместим с Astra (один и тот же базовый дистрибутив), ИШ скорее всего тоже взлетит, но НРД официально не поддерживает
|
||||
|
||||
### Этап 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 до/после |
|
||||
| **`install.sh`** | сразу после поднятия ВМ | Главный скрипт. Делает всё одной командой |
|
||||
| **`install-validata.sh`** | когда придёт Валидата от НРД | Установка СКЗИ Валидата CSP |
|
||||
| **`install-ish.sh`** | если `install.sh` не установил ИШ автоматически | Ручная установка ИШ из локального .deb |
|
||||
| **`healthcheck.sh`** | для проверки состояния | Цветной отчёт о работоспособности всех компонентов |
|
||||
| **`import-data.sh`** | (опционально) если переносишь с другой ВМ | Экспорт БД и настроек со старой ВМ для импорта на новую |
|
||||
|
||||
---
|
||||
|
||||
## Что произойдёт ПОСЛЕ автоматической установки
|
||||
|
||||
`install.sh` дойдёт до точки, где **bj-server работает, но в режиме эмуляции** — потому что Валидата и сертификат УЦ МБ автоматически получить нельзя. В админке сверху будет жёлтая плашка «РЕЖИМ ЭМУЛЯЦИИ». Это ожидаемо.
|
||||
|
||||
### Что нужно сделать пользователю руками
|
||||
|
||||
#### 1. Запросить Валидата CSP в НРД (1 письмо)
|
||||
Email: `soed@nsd.ru` или `pki@moex.com`. Текст подскажет сам скрипт `install-validata.sh` — есть шаблон. Срок ответа НРД — 1-3 дня.
|
||||
|
||||
Когда придёт .deb пакет:
|
||||
```bash
|
||||
sudo bash /opt/bj/src/deploy/astra/install-validata.sh /path/to/validata.deb
|
||||
```
|
||||
|
||||
#### 2. Получить сертификат УЦ Московской Биржи
|
||||
`https://ca.moex.com/` — оформить заявку от организации. Срок — зависит от УЦ.
|
||||
|
||||
#### 3. Подать заявку на тестирование в TEST3 НРД
|
||||
`https://www.nsd.ru/workflow/zayavka-na-testirovanie/` — получить код депонента-тестера.
|
||||
|
||||
#### 4. Когда всё пришло — настроить ИШ через его GUI
|
||||
По `DOC/ruk_install_ish_2025_11_10.pdf` (раздел 10):
|
||||
- Указать БД PostgreSQL (DSN уже в `/var/lib/bj/.bj/setup.json`)
|
||||
- Создать канал WSL с URL `https://gost.nsd.ru/onyxt3/WslService` (TEST3)
|
||||
- Импортировать сертификат УЦ МБ из системного хранилища
|
||||
- Запустить ИШ как сервис: `sudo systemctl enable --now igate`
|
||||
|
||||
#### 5. Привязать bj-server к ИШ
|
||||
`http://<ip>:8080/admin/setup` → раздел «ИШ НРД»:
|
||||
- URL ИШ: `http://localhost:8090` (порт REST API ИШ)
|
||||
- Имя канала: то что задал в ИШ на шаге 4
|
||||
|
||||
После этого жёлтая плашка «РЕЖИМ ЭМУЛЯЦИИ» исчезнет — сообщения пойдут в реальный НРД.
|
||||
|
||||
---
|
||||
|
||||
## Параметры установки
|
||||
|
||||
`install.sh` принимает флаги:
|
||||
|
||||
```bash
|
||||
sudo bash install.sh --bind=:8080 --skip-ish --yes
|
||||
```
|
||||
|
||||
| Флаг | По умолчанию | Что делает |
|
||||
|---|---|---|
|
||||
| `--bind=:8080` | `:8080` | На каком адресе/порту слушать |
|
||||
| `--branch=main` | `main` | Из какой ветки репо собирать |
|
||||
| `--skip-ish` | (выкл) | Не скачивать дистрибутив ИШ (если стоят жёсткие ограничения по интернету) |
|
||||
| `--yes` / `-y` | (выкл) | Не задавать вопросов, отвечать «да» автоматически |
|
||||
|
||||
Также через переменные окружения: `REPO_URL`, `BRANCH`, `BIND_ADDR`, `ISH_DEB_URL`, `NON_INTERACTIVE`.
|
||||
|
||||
---
|
||||
|
||||
## Если что-то сломалось
|
||||
|
||||
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`
|
||||
| Симптом | Решение |
|
||||
|---|---|
|
||||
| `bj-server.service не active` | `journalctl -u bj-server -n 50` |
|
||||
| HTTP 200 не отвечает | проверь что :8080 открыт; `ss -tlnp \| grep 8080` |
|
||||
| Миграции не накатились | `podman exec bj-postgres psql -U bj -l` и `\dt fansy.*` |
|
||||
| ИШ не скачался | положи `igate_100.0-765_amd64.deb` в `/opt/bj/src/dist/ish/` и перезапусти `install.sh` |
|
||||
| Валидата не установлена | это **нормально** на старте — заказывай у НРД, потом `install-validata.sh` |
|
||||
| Не определилась ОС | поддерживаются: Astra, Debian, Ubuntu. Для других — открой issue |
|
||||
|
||||
Health-check всё сразу:
|
||||
```bash
|
||||
sudo bash /opt/bj/src/deploy/astra/healthcheck.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Полный путь от чистой ВМ до прохождения теста с роботом MOEX МОСТ
|
||||
|
||||
| Этап | Что делается | Срок |
|
||||
|---|---|---|
|
||||
| 1. Поднять Astra Linux ВМ | у инфра-команды | 1 день |
|
||||
| 2. Запустить `install.sh` | автоматически | 5-10 мин |
|
||||
| 3. Запросить Валидату в НРД | письмо в `soed@nsd.ru` | 1-3 дня ожидания |
|
||||
| 4. Получить сертификат УЦ МБ | заявка в `ca.moex.com` | 1-2 недели ожидания |
|
||||
| 5. Подать заявку на TEST3 | форма на сайте НРД | 2-5 дней |
|
||||
| 6. Установить Валидату | `install-validata.sh` | 5 мин |
|
||||
| 7. Импортировать сертификат | GUI Валидаты, экспорт в системное хранилище | 15 мин |
|
||||
| 8. Настроить ИШ | GUI ИШ, создать канал WSL | 30 мин |
|
||||
| 9. Привязать bj-server к ИШ | `/admin/setup` через UI | 5 мин |
|
||||
| 10. Прогнать тест с роботом | `/admin/setup` → кнопка | 1 мин |
|
||||
|
||||
**Итог: 2-3 недели от старта до зелёного теста с роботом MOEX МОСТ.** На нашей стороне всё уже готово — задержки только во внешних запросах.
|
||||
|
||||
Reference in New Issue
Block a user