Купил не так давно себе домой ИБП Ippon Kirpich 1050.
Я решил по сигналу с этого Иппона отключать всё, что подключено к нему, и ко второму, который вообще без управления. Теоретически задача выглядела простой, потому что есть ПО от вендора под нужные системы - Windows и Linux. А практически пришлось повозиться, потому что много нюансов.
Пока была актуальна и развивалась программа Apcupsd, я для этих целей использовал её. Она очень удобная и простая в настройке - одинаковые минималистичные файлы конфигураций под все системы, режим работы клиент-сервер. Специально подбирал ИБП, чтобы поддерживала его. Она была совместима не только с аппаратами APC, но и те же Ippon некоторых моделей поддерживала. Сейчас программа заброшена, не обновляется, даже сайта не осталось. Я посмотрел на неё и понял, что всё, каши с ней больше не сварить 😢.
Ippon предлагает использовать программу PowerMaster, написанную на Java. Она поднимает веб сервер, управление через браузер. На первый взгляд не очень удобное решение, но в духе нашего времени. Я поставил её и на винду, и на линукс. В принципе, работает, хоть и жирновата, функциональность отличная, много чего умеет. Работает тоже в режиме клиент-сервер. Серверную часть ставишь на машину, куда подключен ИБП по USB, на остальные - клиентскую часть, которая подключается к серверу и следит за его состоянием, слушает команды.
У меня ИБП подключен к машине с Windows, а выключать надо сервера с PVE и Xpenology. Ставить на гипервизор тяжёлое Java приложение не хочется, а на Xpenology вообще не понятно, встанет ли. Я даже не пробовал. Решил пойти по другому пути. PowerMaster умеет запускать cmd скрипты на события от ИБП. Я решил отправлять на все зависимые машины по SSH команду на выключение после минуты отсутствия электричества.
Настраивается это в разделе Setting ⇨ Advanced. Событие отключения электричества - Utility power failure. Директория, из которой можно выбрать скрипт для этих событий - C:\Program Files (x86)\PowerMaster Plus\extcmd. Там уже есть шаблон default.cmd, в который можно добавить свою логику. Мне её написал ИИ. Пришлось серьёзно заморочиться, чтобы всё отладить. Отмечу несколько важных моментов:
1️⃣ В начало скрипта надо добавить строку:
chcp 65001 >nul 2>&1
Без неё в логах будут крякозябры вместо текста ошибок, что сильно усложнит отладку, если что-то пойдёт не так.
2️⃣ Скрипт должен быть обязательно в кодировке UTF-8 with BOM (UTF-8 со спецификацией). С любой другой кодировкой скрипт не отрабатывал в программе, хотя нормально работал из консоли напрямую.
3️⃣ PowerMaster - 32-х битное приложение. Оно не видит стандартный системный путь до ssh.exe. Надо использовать специальный псевдоним C:\Windows\Sysnative\OpenSSH\ssh.exe.
4️⃣ PowerMaster работает от пользователя System. Ключ для SSH надо положить в директорию C:\Windows\System32\config\systemprofile\.ssh\, назначить пользователя владельцем и удалить все остальные права.
На управляемых системах нужно создать пользователя, который будет запускать shutdown.
Эта простая задача сожрала у меня кучу времени, потому что просто взять и запустить скрипт у меня не получилось. В Apcupsd всё это решалось за 5 минут настройки даже в первый раз. А тут часа 2 колупался, пока все ошибки отладил, учёл нюансы винды и программы.
В итоге подёргал ИБП из розетки, всё корректно отрабатывает. Он, кстати, спокойно тянет 3 обычных системника с БП на 400-500w, не жалуется на перегрузку. Минут 5 с ними работает. С одним - 15-20. Я как раз на него 3 самосбора повесил под тестовый кластер и бэкапы. Плюс ещё 2 машины гасит на втором ИБП. Тот Иппон у меня лет 10 работает, на третьем аккумуляторе уже.
#железо