Мастер настройки — 4 главы (Сервер, Учёт и организация, НРД, Запуск) вместо 10 шагов: в пути только нужное этой установке — без лицензии учёта DEPO, QUIK и модулей их шагов нет, сделанное установщиком (база, Валидата) показано строкой; общая навигация «Назад/Далее»; раздел «Время и сеть» с часовым поясом; модули по лицензии (кабинет, ЕСИА Финанс, экспорт QUIK, НПР) с переходом в раздел и возвратом в мастер; «Проверить всю цепочку» (DEPO, QUIK, пробная блокировка по желанию, подпись, НРД); готовые письма в НРД, ARQA и администратору DEPO; ИШ с образа без интернета
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -10,6 +10,8 @@
|
||||
# Каталог Валидаты — zpki/zsdk (ПК «Валидата Клиент L» для Linux, fs.moex.com ClientL_Other.zip)
|
||||
# и libldap-2.4-2 из Ubuntu 20.04 (нужна zpki, в 22.04 её нет). Ubuntu 22.04 — ОС, на которой
|
||||
# «Валидата Клиент L» ставится официально (Debian 13 её установщик не принимает).
|
||||
# IGATE=<igate-…-amd64.zip> — дистрибутив интеграционного шлюза НРД (с nsd.ru): кладётся в образ, и шлюз
|
||||
# ставится из мастера настройки без интернета («Установить с образа»).
|
||||
# Меню загрузки (grub, BIOS и UEFI): по умолчанию — установка Bridge&Join с автоответами.
|
||||
set -eu
|
||||
SRC=${1:?ubuntu-22.04.x-live-server-amd64.iso}
|
||||
@@ -39,6 +41,14 @@ FILES=$(python3 -c 'import json,sys,base64;s=json.load(open(sys.argv[1]));m=json
|
||||
[ -n "$FILES" ] || { echo "в релизе нет компонентов ядра"; exit 1; }
|
||||
for f in $FILES; do cp "$BUNDLE/$f" "$WORK/bj/bundle/"; done
|
||||
|
||||
# дистрибутив ИШ НРД (необязательно)
|
||||
if [ -n "${IGATE:-}" ]; then
|
||||
case "$(basename "$IGATE")" in igate-*-amd64.zip) ;; *) echo "IGATE — нужен igate-<версия>-amd64.zip с сайта НРД"; exit 1 ;; esac
|
||||
unzip -l "$IGATE" | grep -q 'igate_.*_amd64\.deb' || { echo "в $IGATE нет igate_*.deb"; exit 1; }
|
||||
mkdir -p "$WORK/bj/igate"; cp "$IGATE" "$WORK/bj/igate/"
|
||||
echo "ИШ в образе: $(basename "$IGATE")"
|
||||
fi
|
||||
|
||||
# слой обновлений Ubuntu (необязательно)
|
||||
LAYER=${LAYER:-}
|
||||
LNAME=ubuntu-server-minimal.ubuntu-server.bj
|
||||
|
||||
@@ -30,6 +30,7 @@ autoinstall:
|
||||
- cp -r /cdrom/bj/bundle /target/var/lib/bj/bundle
|
||||
- cp -r /cdrom/bj/validata /target/var/lib/bj/validata
|
||||
- sh -c 'if [ -d /cdrom/bj/debs ]; then cp -r /cdrom/bj/debs /target/var/lib/bj/debs; fi'
|
||||
- sh -c 'if [ -d /cdrom/bj/igate ]; then mkdir -p /target/var/lib/bj/igate-dist && cp /cdrom/bj/igate/igate-*-amd64.zip /target/var/lib/bj/igate-dist/; fi'
|
||||
- install -m 0755 /cdrom/bj/bj-installer /cdrom/bj/bj-firstboot /cdrom/bj/bj-welcome /cdrom/bj/bj-network /target/usr/local/sbin/
|
||||
- install -m 0644 /cdrom/bj/bj-firstboot.service /cdrom/bj/bj-welcome.service /cdrom/bj/bj-welcome.timer /target/etc/systemd/system/
|
||||
- install -m 0644 /cdrom/bj/channel /target/etc/bj/channel
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
# Вызывает root-демон bj-keymedia по запросу из bj (мастер, шаг «Шлюз НРД»); параметры — JSON в BJ_EXTRA.
|
||||
# status — JSON: версия, служба, движок, каналы (контуры)
|
||||
# install — установить или обновить ИШ из дистрибутива НРД (в фоне; ход — /var/lib/bj/igate-install-status.json)
|
||||
# BJ_EXTRA: {"file": "<путь к igate-*.zip|.deb>"} или {"version": "107.0.930"} — скачать с nsd.ru
|
||||
# BJ_EXTRA: {"file": "<путь к igate-*.zip|.deb>"}, {"version": "107.0.930"} — скачать с nsd.ru,
|
||||
# или {"bundled": "1"} — дистрибутив с образа (/var/lib/bj/igate-dist), без интернета
|
||||
# install-now — сама установка (запускается через systemd-run)
|
||||
# contour — создать или обновить канал контура и перезапустить ИШ
|
||||
# BJ_EXTRA: {"contour": "test3|prod", "crypto": "gost|rsa", "deponent": "MC…", "profile": "<профиль Валидаты>"}
|
||||
@@ -90,6 +91,7 @@ case "$cmd" in
|
||||
install)
|
||||
pgrep -f "bj-igate-admin install-now" >/dev/null && err "установка ИШ уже идёт"
|
||||
file=$(j file); ver=$(j version)
|
||||
[ "$(j bundled)" = 1 ] && [ -z "$file$ver" ] && { file=$(ls /var/lib/bj/igate-dist/igate-*-amd64.zip 2>/dev/null | sort -V | tail -1); [ -n "$file" ] || err "в образе нет дистрибутива ИШ"; BJ_EXTRA="{\"file\":\"$file\"}"; }
|
||||
[ -n "$file$ver" ] || err "не указан дистрибутив ИШ (файл или версия)"
|
||||
[ -z "$file" ] || [ -f "$file" ] || err "файл дистрибутива не найден: $file"
|
||||
[[ -z "$ver" || "$ver" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || err "версия ИШ — вида 107.0.930"
|
||||
@@ -241,7 +243,7 @@ SQL
|
||||
systemctl enable igate >/dev/null 2>&1
|
||||
systemctl restart igate || die "служба igate не запустилась"
|
||||
wait_engine 120 || die "ИШ запущен, но движок не перешёл в Running за 2 минуты. Журнал ИШ: $DATA_DIR/logs-svc/log.txt"
|
||||
case "$(j file)" in /var/lib/bj/igate-upload/*) rm -f "$(j file)" ;; esac # загруженный архив больше не нужен
|
||||
case "$(j file)" in /var/lib/bj/igate-upload/*) rm -f "$(j file)" ;; esac # загруженный архив больше не нужен (с образа — остаётся)
|
||||
st done "ИШ $(igate_version) установлен и работает; дальше — канал контура (TEST3 или боевой)" ;;
|
||||
|
||||
contour)
|
||||
|
||||
@@ -14,7 +14,7 @@ process_one(){
|
||||
# интеграционный шлюз НРД: состояние, установка, канал контура (TEST3 | боевой); параметры — JSON в extra
|
||||
igate-status|igate-install|igate-contour) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-igate-admin "${action#igate-}" 2>&1) ;;
|
||||
# системные настройки сервера: серверы времени (NTP)
|
||||
system-ntp) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-system-admin ntp 2>&1) ;;
|
||||
system-ntp|system-tz) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-system-admin "${action#system-}" 2>&1) ;;
|
||||
# резервное копирование и восстановление (настройки bj → bj-backup-admin); параметры — JSON в extra
|
||||
backup-config|backup-test|backup-run|backup-list|backup-verify|backup-restore) out=$(BJ_EXTRA="$extra" /usr/local/sbin/bj-backup-admin "${action#backup-}" 2>&1) ;;
|
||||
# Перезапуск службы модуля из админки. Список закрытый: чужую службу
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/bash
|
||||
# bj-system-admin — системные настройки сервера bj из веб-интерфейса (через root-демон bj-keymedia).
|
||||
# tz — часовой пояс сервера (BJ_EXTRA: "Europe/Moscow")
|
||||
# ntp — серверы времени (BJ_EXTRA: "ntp1.example.ru ntp2.example.ru"): ntpd, chrony или systemd-timesyncd —
|
||||
# что стоит на сервере. Время важно для подписей и обмена с НРД.
|
||||
set -uo pipefail
|
||||
@@ -42,5 +43,10 @@ PY
|
||||
systemctl restart systemd-timesyncd || err "служба systemd-timesyncd не перезапустилась"
|
||||
ok "серверы времени: $servers (служба systemd-timesyncd)"
|
||||
fi ;;
|
||||
tz)
|
||||
zone=$(printf '%s' "${BJ_EXTRA:-}" | tr -d ' ')
|
||||
[[ "$zone" =~ ^[A-Za-z]+(/[A-Za-z_+-]+)*$ ]] && [ -f "/usr/share/zoneinfo/$zone" ] || err "неизвестный часовой пояс: $zone"
|
||||
timedatectl set-timezone "$zone" 2>/dev/null || { ln -sf "/usr/share/zoneinfo/$zone" /etc/localtime && echo "$zone" > /etc/timezone; } || err "не удалось установить часовой пояс"
|
||||
ok "часовой пояс сервера: $zone" ;;
|
||||
*) err "неизвестная команда: $cmd" ;;
|
||||
esac
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"bj-component-install": {
|
||||
"fingerprint": "c6935ab9b97592629f8f997cabfb76fe64b9b41ad043150232753f46c5740774",
|
||||
"version": "2026.10.05.15"
|
||||
"fingerprint": "d3b3541f32bfdec0f87c3ec6937cad4bb9f0fc1d081807ce285f35c55d7863be",
|
||||
"version": "2026.10.05.18"
|
||||
},
|
||||
"bj-installer": {
|
||||
"fingerprint": "39d6dca9b7789bc7cc585ba30958bfb4625a1d41cea149ec4dcfd998cf901045",
|
||||
"version": "2026.10.05.15"
|
||||
"fingerprint": "fa98721f711ada9d469923ca592a23936d853809e3e8e894b8ced0ddcecab815",
|
||||
"version": "2026.10.05.18"
|
||||
},
|
||||
"bj-lk": {
|
||||
"fingerprint": "37bf4ba7d13bc3cfb52032dfb95851b9d5d702f1a2244e185a1b6a5b87a5cfc6",
|
||||
@@ -20,8 +20,8 @@
|
||||
"version": "2026.09.25.14"
|
||||
},
|
||||
"bj-server": {
|
||||
"fingerprint": "c07806b81189f3963bc74b209159b64ca2358e52f6587f11754d47bf7528cb47",
|
||||
"version": "2026.10.05.15"
|
||||
"fingerprint": "fdb494d78bafc78559d6938177634dfe2aea8e1acf4db8e86f50debdf1bf12f0",
|
||||
"version": "2026.10.05.18"
|
||||
},
|
||||
"crypto-service.jar": {
|
||||
"fingerprint": "2c4fd536bc9b1c20c69a70e8dcd374a61847b263aeb2e474c45debb01fbd8233",
|
||||
|
||||
Reference in New Issue
Block a user