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:
Executable
+114
@@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
# healthcheck.sh — проверка готовности bj-server после установки на Astra Linux.
|
||||
# Запускается на самой Astra Linux ВМ, печатает зелёные/жёлтые/красные галочки.
|
||||
|
||||
set -uo pipefail
|
||||
|
||||
ok() { echo -e " \033[1;32m✓\033[0m $*"; }
|
||||
warn() { echo -e " \033[1;33m⚠\033[0m $*"; }
|
||||
fail() { echo -e " \033[1;31m✗\033[0m $*"; }
|
||||
|
||||
echo "================================================================"
|
||||
echo " Bridge-and-Join-s — проверка состояния"
|
||||
echo "================================================================"
|
||||
|
||||
# 1. ОС
|
||||
echo
|
||||
echo "[1] Операционная система"
|
||||
if [ -r /etc/astra_version ]; then
|
||||
ok "Astra Linux: $(cat /etc/astra_version)"
|
||||
else
|
||||
warn "Не Astra Linux — ИШ может не запуститься"
|
||||
fi
|
||||
|
||||
# 2. Пользователь bj
|
||||
echo
|
||||
echo "[2] Пользователь и каталоги"
|
||||
id bj >/dev/null 2>&1 && ok "пользователь bj существует" || fail "пользователь bj не создан"
|
||||
[ -d /opt/bj ] && ok "/opt/bj существует" || fail "/opt/bj не найден"
|
||||
[ -x /opt/bj/bj-server ] && ok "/opt/bj/bj-server исполняемый" || fail "/opt/bj/bj-server отсутствует"
|
||||
[ -d /var/lib/bj/.bj ] && ok "/var/lib/bj/.bj существует" || warn "/var/lib/bj/.bj не создан"
|
||||
|
||||
# 3. systemd
|
||||
echo
|
||||
echo "[3] systemd сервис"
|
||||
if systemctl is-enabled --quiet bj-server 2>/dev/null; then
|
||||
ok "bj-server.service enabled"
|
||||
else
|
||||
warn "bj-server.service не enabled"
|
||||
fi
|
||||
if systemctl is-active --quiet bj-server 2>/dev/null; then
|
||||
ok "bj-server.service active"
|
||||
else
|
||||
fail "bj-server.service не active — systemctl status bj-server"
|
||||
fi
|
||||
|
||||
# 4. HTTP
|
||||
echo
|
||||
echo "[4] HTTP-эндпоинты"
|
||||
HTTP_OK=0
|
||||
for path in / /admin/ /admin/wizard /admin/help/architecture; do
|
||||
code=$(curl -s -o /dev/null -w "%{http_code}" "http://127.0.0.1:8080$path" 2>/dev/null || echo "—")
|
||||
if [ "$code" = "200" ] || [ "$code" = "303" ]; then
|
||||
ok "GET $path → $code"
|
||||
HTTP_OK=$((HTTP_OK+1))
|
||||
else
|
||||
fail "GET $path → $code"
|
||||
fi
|
||||
done
|
||||
|
||||
# 5. PostgreSQL
|
||||
echo
|
||||
echo "[5] PostgreSQL"
|
||||
if command -v podman >/dev/null 2>&1; then
|
||||
if podman ps --format '{{.Names}}' 2>/dev/null | grep -qx bj-postgres; then
|
||||
ok "контейнер bj-postgres работает"
|
||||
else
|
||||
warn "контейнер bj-postgres не запущен"
|
||||
fi
|
||||
else
|
||||
warn "podman не установлен"
|
||||
fi
|
||||
if pg_isready -h 127.0.0.1 -p 5432 -U bj >/dev/null 2>&1; then
|
||||
ok "PostgreSQL отвечает на :5432"
|
||||
else
|
||||
warn "PostgreSQL :5432 недоступен"
|
||||
fi
|
||||
|
||||
# 6. Валидата
|
||||
echo
|
||||
echo "[6] СКЗИ Валидата (для ИШ)"
|
||||
VAL_FOUND=0
|
||||
for path in /opt/Validata /opt/validata-csp /opt/Validata-CSP; do
|
||||
[ -d "$path" ] && { ok "найдена в $path"; VAL_FOUND=1; break; }
|
||||
done
|
||||
[ "$VAL_FOUND" = 0 ] && warn "не установлена (запроси у НРД soed@nsd.ru, потом sudo bash deploy/astra/install-validata.sh)"
|
||||
|
||||
# 7. ИШ
|
||||
echo
|
||||
echo "[7] Интеграционный шлюз (ИШ)"
|
||||
if command -v igate >/dev/null 2>&1; then
|
||||
ok "igate в PATH: $(which igate)"
|
||||
elif [ -x /opt/igate/igate ]; then
|
||||
ok "igate в /opt/igate/"
|
||||
else
|
||||
warn "ИШ не установлен (sudo bash deploy/astra/install-ish.sh)"
|
||||
fi
|
||||
|
||||
# 8. Сетевые порты
|
||||
echo
|
||||
echo "[8] Сетевые порты"
|
||||
if command -v ss >/dev/null 2>&1; then
|
||||
PORTS=$(ss -tlnp 2>/dev/null | awk 'NR>1{print $4}')
|
||||
echo "$PORTS" | grep -q ':8080$' && ok ":8080 (bj-server) слушает" || fail ":8080 не слушает"
|
||||
echo "$PORTS" | grep -q ':5432$' && ok ":5432 (postgres) слушает" || warn ":5432 не слушает"
|
||||
echo "$PORTS" | grep -q ':8090$' && ok ":8090 (предполагаемый ИШ) слушает" || warn ":8090 (ИШ) не слушает"
|
||||
fi
|
||||
|
||||
# Итог
|
||||
echo
|
||||
echo "================================================================"
|
||||
echo " Готово. Подробнее:"
|
||||
echo " journalctl -u bj-server -f"
|
||||
echo " http://$(hostname -I | awk '{print $1}'):8080/admin/"
|
||||
echo "================================================================"
|
||||
Reference in New Issue
Block a user