5.3 KiB
Скрипт управления жизненным циклом агента
vps-agentctl.sh устанавливает подписанные и проверенные по контрольной сумме артефакты релизов, не передавая сетевой ответ напрямую в shell. Запускайте локально проверенную копию скрипта от имени root.
./vps-agentctl.sh install --version v0.1.0
./vps-agentctl.sh update --version v0.1.1
./vps-agentctl.sh status
./vps-agentctl.sh restart
./vps-agentctl.sh version
./vps-agentctl.sh rollback
./vps-agentctl.sh remove
./vps-agentctl.sh remove --purge --yes
Укажите переменную окружения VPS_AGENT_RELEASES_URL или передайте параметр --releases-url, чтобы задать корневой URL репозитория релизов, совместимого с GitHub Releases.
Чтобы сделать обязательной проверку файла SHA256SUMS.minisig, задайте переменную VPS_AGENT_MINISIGN_PUBLIC_KEY. Проверка контрольных сумм обязательна всегда.
Поддерживаются следующие имена артефактов:
vps-agent-linux-amd64vps-agent-linux-arm64
Каждую архитектуру можно собрать и упаковать независимо на соответствующей Linux-машине. Для релиза только под amd64 второй бинарный файл не нужен:
./scripts/build-agent-native.sh dist
Скрипт определит архитектуру текущего Linux-хоста, выполнит release-сборку и создаст только соответствующий артефакт. Например, на Linux x86_64 будут созданы dist/vps-agent-linux-amd64 и dist/SHA256SUMS.
Если бинарный файл уже собран, можно запустить только упаковку:
./package-agent-release.sh \
--output dist \
--amd64 path/to/x86_64/vps-agent
На отдельном Linux arm64 builder используется независимый запуск:
./package-agent-release.sh \
--output dist \
--arm64 path/to/aarch64/vps-agent
Если оба Linux-бинарника уже скопированы на одну машину, их можно упаковать одним запуском:
./package-agent-release.sh \
--output dist \
--amd64 path/to/x86_64/vps-agent \
--arm64 path/to/aarch64/vps-agent
Скрипт создаёт файлы с каноническими именами и пересобирает SHA256SUMS для всех артефактов, находящихся в выходном каталоге. На Linux используется sha256sum, а на macOS — shasum -a 256. Если задана переменная VPS_AGENT_MINISIGN_SECRET_KEY, дополнительно создаётся файл подписи SHA256SUMS.minisig.
Нативная сборка на macOS создаёт Mach-O и для Linux-релиза не подходит. На macOS можно объединять и подписывать уже собранные Linux-артефакты, но сами linux/amd64 и linux/arm64 бинарники собираются независимо на Linux-хостах соответствующей архитектуры.
Во время установки скрипт:
- проверяет наличие прав
root; - проверяет, что система работает под Linux и использует
systemd; - определяет и проверяет архитектуру процессора;
- создаёт изолированного системного пользователя и необходимые директории;
- проверяет бинарный файл перед установкой;
- создаёт безопасную конфигурацию и случайный токен;
- устанавливает настройки усиления безопасности (
hardening); - запускает systemd-службу агента.
При обновлении новая версия бинарного файла сначала устанавливается во временное состояние. После этого выполняется проверка работоспособности службы. Если проверка завершается неудачно, автоматически восстанавливается предыдущая версия.
Команда rollback меняет местами текущую и предыдущую версии агента.
По умолчанию команда удаления сохраняет каталог:
/etc/vps-agent
Параметр --purge дополнительно удаляет конфигурацию и учётные данные агента. Для этого требуется подтверждение через терминал либо явное указание флага:
--yes