119 lines
4.8 KiB
Markdown
119 lines
4.8 KiB
Markdown
# Массовый деплой InfoUser Agent
|
|
|
|
Скрипт `deploy-agent.sh` устанавливает или обновляет агент `info-user-agent` на списке Linux-хостов по SSH.
|
|
|
|
## Принцип работы
|
|
|
|
1. Пытается подключиться по ключу `id_rsa`.
|
|
2. Если ключ не подходит — подключается по паролю и копирует публичный ключ в `~/.ssh/authorized_keys` (последующие запуски будут по ключу).
|
|
3. Устанавливает/обновляет агент:
|
|
- Сначала `apt-get install info-user-agent` из подключённого apt-репозитория.
|
|
- Если apt не сработал — fallback через `dpkg -i` из `.deb` в корне проекта.
|
|
4. Пишет `config.json` с адресом сервера и токеном.
|
|
5. Запускает systemd-таймер и триггерит первый heartbeat.
|
|
6. Раскладывает результат в `deploy-ok.txt` / `deploy-deferred.txt` и логи в `logs/`.
|
|
|
|
## Требования
|
|
|
|
На машине, с которой запускается скрипт:
|
|
|
|
- `bash`
|
|
- `ssh`, `scp`
|
|
- `sshpass`
|
|
- `ping`
|
|
|
|
На целевых хостах:
|
|
|
|
- Доступен SSH-сервер.
|
|
- Пользователь входит в `sudo` (без пароля на сам sudo запросы идут с паролем).
|
|
- Подключён apt-репозиторий с пакетом `info-user-agent` (для основного пути установки).
|
|
|
|
## Подготовка
|
|
|
|
### 1. SSH-ключ
|
|
|
|
Положите приватный ключ рядом со скриптом:
|
|
|
|
```bash
|
|
cp /path/to/id_rsa ./id_rsa
|
|
chmod 600 ./id_rsa
|
|
```
|
|
|
|
Публичный ключ `./id_rsa.pub` будет сгенерирован автоматически при первом запуске.
|
|
|
|
### 2. Список хостов
|
|
|
|
Создайте `ip.txt` (один хост на строку):
|
|
|
|
```text
|
|
user@192.168.255.50
|
|
user@192.168.255.16
|
|
192.168.255.71
|
|
# это комментарий
|
|
```
|
|
|
|
Если пользователь не указан, используется `user`.
|
|
|
|
### 3. Параметры подключения
|
|
|
|
По умолчанию:
|
|
|
|
- SSH-порт: `22`
|
|
- Пользователь по умолчанию: `user`
|
|
- Адрес сервера: `http://192.168.255.180:3000`
|
|
- Токен агента: `a916c8cd656b3f40acc2920820abf88e`
|
|
|
|
**Пароль SSH/Sudo запрашивается интерактивно** при запуске скрипта. Чтобы не вводить каждый раз, можно задать переменную окружения:
|
|
|
|
```bash
|
|
export SSH_PASS='1q2w3e$R'
|
|
export SERVER_URL='http://monitor.example.com:3000'
|
|
export AGENT_TOKEN='my-token'
|
|
export SSH_PORT=2222
|
|
export DEFAULT_USER='admin'
|
|
./deploy-agent.sh
|
|
```
|
|
|
|
В этом случае пароль не отображается на экране и не сохраняется в истории shell.
|
|
|
|
## Запуск
|
|
|
|
```bash
|
|
cd /home/user/moder/info-user/deploy
|
|
./deploy-agent.sh
|
|
```
|
|
|
|
## Результат
|
|
|
|
После завершения рядом со скриптом появятся:
|
|
|
|
- `deploy-ok.txt` — хосты, на которых всё прошло успешно.
|
|
- `deploy-deferred.txt` — хосты, которые надо доразворачивать (нет пинга, нет SSH, ошибка установки).
|
|
- `logs/` — подробные логи по каждому хосту.
|
|
- `ip.txt.bak.YYYYMMDD_HHMMSS` — бэкап списка хостов.
|
|
|
|
Если в `deploy-deferred.txt` что-то есть, исправьте проблему и запустите скрипт снова — он переберёт весь список заново.
|
|
|
|
## Установка отдельного хоста вручную
|
|
|
|
Если хост не попадает под массовый деплой:
|
|
|
|
```bash
|
|
# На хосте
|
|
sudo apt-get update
|
|
sudo apt-get install -y info-user-agent
|
|
sudo info-user-agent-setup
|
|
# или отредактируйте /opt/info-user-agent/config.json вручную
|
|
sudo systemctl start info-user-agent.timer
|
|
sudo systemctl start info-user-agent
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
- **"SSH недоступен (ключ и пароль)"** — хост пингуется, но не принимает ни ключ, ни пароль. Проверьте пользователя/пароль, настройки SSH (`PermitRootLogin` / `PasswordAuthentication`).
|
|
- **"Ошибка установки"** — apt-репозиторий недоступен и fallback `.deb` не найден. Положите актуальный `.deb` в корень проекта (`info-user-agent_*.deb`).
|
|
- **sshpass не найден** — установите:
|
|
```bash
|
|
sudo apt-get install -y sshpass
|
|
```
|