88 lines
5.3 KiB
Markdown
88 lines
5.3 KiB
Markdown
# Скрипт управления жизненным циклом агента
|
||
|
||
`vps-agentctl.sh` устанавливает подписанные и проверенные по контрольной сумме артефакты релизов, не передавая сетевой ответ напрямую в shell. Запускайте локально проверенную копию скрипта от имени `root`.
|
||
|
||
```bash
|
||
./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-amd64`
|
||
- `vps-agent-linux-arm64`
|
||
|
||
Каждую архитектуру можно собрать и упаковать независимо на соответствующей Linux-машине. Для релиза только под amd64 второй бинарный файл не нужен:
|
||
|
||
```bash
|
||
./scripts/build-agent-native.sh dist
|
||
```
|
||
|
||
Скрипт определит архитектуру текущего Linux-хоста, выполнит release-сборку и создаст только соответствующий артефакт. Например, на Linux x86_64 будут созданы `dist/vps-agent-linux-amd64` и `dist/SHA256SUMS`.
|
||
|
||
Если бинарный файл уже собран, можно запустить только упаковку:
|
||
|
||
```bash
|
||
./package-agent-release.sh \
|
||
--output dist \
|
||
--amd64 path/to/x86_64/vps-agent
|
||
```
|
||
|
||
На отдельном Linux arm64 builder используется независимый запуск:
|
||
|
||
```bash
|
||
./package-agent-release.sh \
|
||
--output dist \
|
||
--arm64 path/to/aarch64/vps-agent
|
||
```
|
||
|
||
Если оба Linux-бинарника уже скопированы на одну машину, их можно упаковать одним запуском:
|
||
|
||
```bash
|
||
./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` меняет местами текущую и предыдущую версии агента.
|
||
|
||
По умолчанию команда удаления сохраняет каталог:
|
||
|
||
```text
|
||
/etc/vps-agent
|
||
```
|
||
|
||
Параметр `--purge` дополнительно удаляет конфигурацию и учётные данные агента. Для этого требуется подтверждение через терминал либо явное указание флага:
|
||
|
||
```bash
|
||
--yes
|
||
```
|