4.6 KiB
4.6 KiB
Массовый деплой InfoUser Agent
Скрипт deploy-agent.sh устанавливает или обновляет агент info-user-agent на списке Linux-хостов по SSH.
Принцип работы
- Пытается подключиться по ключу
id_rsa. - Если ключ не подходит — подключается по паролю и копирует публичный ключ в
~/.ssh/authorized_keys(последующие запуски будут по ключу). - Устанавливает/обновляет агент:
- Сначала
apt-get install info-user-agentиз подключённого apt-репозитория. - Если apt не сработал — fallback через
dpkg -iиз.debв корне проекта.
- Сначала
- Пишет
config.jsonс адресом сервера и токеном. - Запускает systemd-таймер и триггерит первый heartbeat.
- Раскладывает результат в
deploy-ok.txt/deploy-deferred.txtи логи вlogs/.
Требования
На машине, с которой запускается скрипт:
bashssh,scpsshpassping
На целевых хостах:
- Доступен SSH-сервер.
- Пользователь входит в
sudo(без пароля на сам sudo запросы идут с паролем). - Подключён apt-репозиторий с пакетом
info-user-agent(для основного пути установки).
Подготовка
1. SSH-ключ
Положите приватный ключ рядом со скриптом:
cp /path/to/id_rsa ./id_rsa
chmod 600 ./id_rsa
Публичный ключ ./id_rsa.pub будет сгенерирован автоматически при первом запуске.
2. Список хостов
Создайте ip.txt (один хост на строку):
user@192.168.255.50
user@192.168.255.16
192.168.255.71
# это комментарий
Если пользователь не указан, используется user.
3. Параметры подключения
По умолчанию:
- SSH-порт:
22 - SSH/Sudo-пароль:
1q2w3e$R - Пользователь по умолчанию:
user - Адрес сервера:
http://192.168.255.180:3000 - Токен агента:
a916c8cd656b3f40acc2920820abf88e
Переопределить можно через переменные окружения:
export SSH_PASS='MyS3cr3t$'
export SERVER_URL='http://monitor.example.com:3000'
export AGENT_TOKEN='my-token'
export SSH_PORT=2222
export DEFAULT_USER='admin'
./deploy-agent.sh
Запуск
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 что-то есть, исправьте проблему и запустите скрипт снова — он переберёт весь список заново.
Установка отдельного хоста вручную
Если хост не попадает под массовый деплой:
# На хосте
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 не найден — установите:
sudo apt-get install -y sshpass