# Массовый деплой 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 ```