Скрипт установки сервиса #8
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Нужно создать скрипт, который бы устанавливал на машину linux с pi сборщика данных, который предоставляет для UI данные.
С точки зрения пользователя это должно выглядеть так: одна команда на скачивание и установку, пользователь лишь вставляет команду и все должно происходить автоматически. В конце статус об успешной или не успешной установке. Скрипт должен быть идемпотентным.
Сначала предложи решение и дождись моего аппрува.
Предлагаю решение.
Формат запуска
Одна команда — скачивание и установка (репозиторий публичный, raw-файл доступен без авторизации):
Кто не любит pipe-to-bash — тот же скрипт можно скачать и запустить:
curl -fsSL -o install.sh <url> && sudo bash install.sh. Скрипт поддерживает оба варианта.Что делает скрипт (
deploy/install.sh, чистый bash, без внешних зависимостей)/opt/watcherenishуже есть →git pull(обновление), нет →git clone.npm testперед запуском сервиса — при падении установка прерывается со статусом «не успешно».deploy/pi-web-monitor.service; пользователь/пути (User, WorkingDirectory,SESSIONS_DIR,GATE_LOG) автодетектятся, всё переопределяется переменными окружения скрипта.daemon-reload,enable --now.GET /api/healthсо статусом ok (с fallback наsystemctl is-active), в конце печатаем:Идемпотентность
Повторный запуск безопасен: обновляет код, перегенерирует юнит, рестартует сервис; не создаёт дубликатов юнитов. Конфиг-переменные вынесем в
EnvironmentFile=/etc/default/pi-web-monitor— файл создаётся только при первом запуске и при повторных установках не перетирается (ручные правки не теряются).Вопросы (может, сразу снимем)
AUTH_TOKEN: генерировать автоматически при первой установке (печатать в итоговом статусе) или по умолчанию оставитьBIND=127.0.0.1без токена, как сейчас в юните?/opt/watcherenish, пользовательpi,SESSIONS_DIR=~pi/.pi/agent/sessions— подходят? Всё переопределяется флагами, но дефолты лучше зафиксировать.Жду аппрува — после него возьму задачу в работу (ветка
feature/8_install_script).Аппрув, приступай
Аппрув получен, фиксирую решения:
AUTH_TOKEN— генерируем автоматически при первой установке (openssl rand -hex 32), печатаем в итоговом статусе и сохраняем в/etc/default/pi-web-monitor./opt/watcherenish, пользовательpi,SESSIONS_DIR=~pi/.pi/agent/sessions(всё переопределяется переменными окружения).Беру задачу, ветка
feature/8_install_script. Блокировка снята.Готово, PR #10 на ревью, ветка
feature/8_install_script.Всё по согласованному плану, плюс решения из аппрува:
AUTH_TOKENгенерируется автоматически при первой установке и печатается в итоговом статусе; дефолтные пути —/opt/watcherenish, пользовательpi,SESSIONS_DIR=~pi/.pi/agent/sessions.Проверено E2E на этой машине: установка с нуля, идемпотентный перезапуск (конфиг не перетирается), pipe-режим, healthcheck с токеном/без, коды возврата при ошибках.
Примечание: one-liner
curl ... | sudo bashзаработает после мержа (скрипт появится вmain); в PR он указан как целевой.