Files
info-user/deploy

Массовый деплой 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-ключ

Положите приватный ключ рядом со скриптом:

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