Перейти к основному содержимому
Версия: 2.0.x

Установка Selena (online)

Раздел описывает установку Selena нативно (systemd, без контейнеров) в онлайн-режиме.

Доступ к реестру (online) + license​

  • DNS: hub.selena.sh может не резолвиться на тест-VM.

    echo "194.190.8.222 hub.selena.sh" | sudo tee -a /etc/hosts
  • Креды Nexus: передаются install.sh как env.

    export NX_USER='<логин>'  
    export NX_PASS='<пароль>'
  • license: нужна только если ставится Engine, без неё Engine-фаза пропускается.

    sudo install -d -m0755 /run/selena-input  
    sudo cp <license>.jwt /run/selena-input/license.jwt
  • LLM-ключ: ⚠️ обязателен, если вы используете AI-чат.
    Без него сервис selena-ai-backend не запустится (юнит уйдёт в цикл перезапусков).
    Если AI-чат не нужен - отключите его в конфигурации: components.ai: false.

    • Основной путь (рекомендуемый):

      printf '%s' '<LLM_API_KEY>' | sudo tee /var/lib/selena/runtime/secrets/llm-api-key >/dev/null  
      sudo chmod 0600 /var/lib/selena/runtime/secrets/llm-api-key
    • Альтернативный путь (инсталлятор читает его первым и сам копирует значение в runtime/secrets):

      printf '%s' '<LLM_API_KEY>' | sudo tee /run/selena-input/llm-api-key >/dev/null  
      sudo chmod 0600 /run/selena-input/llm-api-key
    • Назначение каталога /run/selena-input: входной каталог оператора для license.jwt и llm-api-key.
      Инсталлятор читает файлы и переносит значения: лицензию - в CM,
      LLM-ключ - в /var/lib/selena/runtime/secrets/llm-api-key.
      Ничего постоянно в нём не хранится, файлы после установки можно удалить.

    • При смене ключа необходимо повторно запустить install.sh/upgrade.sh и перезапустить сервис: systemctl restart selena-ai-backend.

Настройка deploy.yaml​

Скопируйте пример и настройте под свою среду (главное - publicHost):

cp examples/all-in-one.deploy.yaml my.deploy.yaml

или

cp examples/cm.deploy.yaml my.deploy.yaml

Основные параметры для изменения:

host:  
publicHost: <IP-или-DNS> # адрес для redirect URI Keycloak и ссылок UI (localhost -> снаружи не зайти)
<br/>components: # выключить ненужное (true/false); CM и Engine не тоглятся
ai: false # напр. поднять без AI-сервисов
<br/>engine:
queryHost: 127.0.0.1 # all-in-one. Если FE-нода отдельная -> её IP (напр. 10.0.0.5)

Установка​

Перейдите в директорию инсталлятора:

cd deploy/baremetal

Запустите установку:

# All-in-one

sudo NX_USER='<логин>' NX_PASS='<пароль>' bash scripts/install.sh --deploy my.deploy.yaml --artifacts examples/artifacts.yaml

# Инфра + control-plane (без Engine)

sudo NX_USER='<логин>' NX_PASS='<пароль>' bash scripts/install.sh --deploy my.deploy.yaml --artifacts examples/artifacts-cm.yaml
примечание

Для передачи переменных используется форма sudo NX_USER=... NX_PASS=..., которая работает при любых настройках sudoers. Альтернативно можно использовать sudo -E с предварительным экспортом переменных, но это требует наличия флага SETENV в политике sudoers.

Установка выполняется поэтапно:
preflight → java → secrets → fetch (скачать+sha256+распаковать) → рендер юнитов → PostgreSQL → db_migrate_apps (alembic-миграции IDE и AI-backend) → Keycloak realm → инфра → control-plane → Engine (CM через ansible).

По завершении инсталлятор создаёт файл /etc/selena/all-in-one-credentials.txt (или аналог для cm).

Долгий прогон удобно запускать под setsid, чтобы не оборвался при разрыве SSH:

sudo NX_USER='<логин>' NX_PASS='<пароль>' setsid bash scripts/install.sh ... &> /var/log/selena-install.log

Проверка​

sudo bash scripts/status.sh # таблица юнитов + health-коды (ждём 200)  
systemctl status 'selena-*' # состояние всех юнитов
sudo cat /etc/selena/all-in-one-credentials.txt

Доступы (логин в CM/IDE/AI - через SSO realm selena, юзер admin, пароль = Keycloak-admin):

СервисURL
Cluster Managerhttp://<publicHost>:8088
IDE (Querybook)http://<publicHost>:10001
AIhttp://<publicHost>:8412
Keycloak adminhttp://<publicHost>:8080
Grafanahttp://<publicHost>:3000

После сборки Engine-кластера - перезапуск IDE (Querybook)​

All-in-one: автоматический перезапуск сервисов IDE и MCP выполняется инсталлятором по завершении установки. Дополнительных действий не требуется.

Инфра + control-plane (вынесенный Engine): после сборки кластера Selena и запуска FE/BE-компонентов необходимо перезапустить три компонента Querybook, чтобы IDE получила актуальные параметры подключения к StarRocks, включая impersonator-пароли и адрес активного FE:

sudo systemctl restart selena-ide-web.service selena-ide-worker.service selena-ide-scheduler.service selena-mcp.service
примечание

Если этого не сделать, IDE может сохранить неактуальное или пустое подключение к движку, и запросы будут направляться на FE, который на момент запуска IDE ещё не существовал.

После перезапуска проверьте, что все три компонента активны, а веб-интерфейс возвращает статус health:

systemctl is-active selena-ide-web selena-ide-worker selena-ide-scheduler selena-mcp  
curl -s -o /dev/null -w '%{http_code}\\n' <http://127.0.0.1:10001/health> # ожидайте 200

Обновление версий и конфигурации (upgrade.sh)​

Стенд приводится к yaml без полной reinstall - рестартуют только изменившиеся сервисы. Указывайте оба флага явно (дефолты используют examples/ репозитория, а не файлы, с которыми ставился стенд):

# 1. поменяйте версию в artifacts.yaml и/или конфиг в deploy.yaml  
# 2. посмотрите план (стенд не изменяется; в online-режиме NX_USER/NX_PASS обязательны
# и для --dry-run - их требует загрузка конфигурации):
sudo NX_USER=... NX_PASS=... ./scripts/upgrade.sh --deploy deploy.yaml --artifacts artifacts.yaml --dry-run
# 3. примените:
sudo NX_USER=... NX_PASS=... ./scripts/upgrade.sh --deploy deploy.yaml --artifacts artifacts.yaml

# после sudo (как в примерах выше):
sudo NX_USER=... NX_PASS=... ./scripts/upgrade.sh ...
# или из env-файла с export-строками:
sudo bash -c 'set -a; . /path/to/nx.env; set +a; ./scripts/upgrade.sh ...'
# или (если sudoers разрешает): . nx.env && sudo NX_USER=... NX_PASS=... ./scripts/upgrade.sh ...