Обновление glpi
Обновление glpi и fusion'а, это всегда цирк с конями. Вот и в этот раз, стоило оставить на пару месяцев без внимания - всё сломалось. Слава б-гу, баги там глупые и тривиальные.
Вот например, после обновлениия 0.83.31 -> 0.84.1 отломалось:
Во-первых - переколбасили управление сетями. Сейчас адреса сетей и их определение прописываются в (считайте):
- Настройки > Выпадающие списки > Сети (внутренняя настройка glpi, ни на что кроме красоты не влияет), представляет собой выпадающий список на первой вкладке в любом "компьютере"
Настройки > Выпадающие списки > IP-сети (аналогично выше), показывается в недрах настройки сетевого порта
Дополнения > FusionInventory > Конфигурация диапазона ip-адресов (внутренняя настройка fusioninventory, никак не пересекается с двумя перечисленными выше), показывается в настройках задачи сетевой инвентаризации и опроса
- Дополнения > IP Adressing (по доброй традиции - не пересекается с предыдущими)
Во-вторых - продолжается свистопляска с snmp-tool'ом, его переделали уже минимум один раз и всё равно он глючит. В этот раз, он потерял все загруженные модели snmp, что вызвало охренение клиента, пытающегося выполнить discovery указанной сети.
Первый этап, discovery.xml нет на сервере сообще, смотрим дико информативное сообщение агента:
[debug] No NetDiscovery requested in the prolog
[info] task NetDiscovery execution not requested
Через полчаса я догадался посмотреть в логи самого glpi и увидел это:
2014-02-25 15:44:57
Warning(2): md5_file(/srv/http/default/glpi/files/_plugins/fusioninventory/discovery.xml): failed to open stream: No such file or directory
Backtrace :
/srv/http/default/glpi/plugins/fusioninventory/inc/networkdiscovery.class.php:321 md5_file()
/srv/http/default/glpi/plugins/fusioninventory/inc/communication.class.php:260 PluginFusioninventoryNetworkdiscovery->run()
/srv/http/default/glpi/plugins/fusioninventory/inc/communication.class.php:437 PluginFusioninventoryCommunication->getTaskAgent()
/srv/http/default/glpi/plugins/fusioninventory/front/communication.php:85 PluginFusioninventoryCommunication->handleOCSCommunication()
/srv/http/default/glpi/plugins/fusioninventory/index.php:50 include_once()
Окей, греп по исходникам ничего не дал, просто создал этот файл и перезапустил агента (авось выругается поинформативнее):
[debug] FusionInventory NetDiscovery task 2.2.0
[debug] [http client] Using Compress::Zlib for compression
[debug] No dictionary, update request sent, exiting
Алилуйя, уже начинаю понимать, что это как-то связано со списком "известных" устройств (а не, к примеру, настройками этого самого discovery) В логах самого glpi при этом (уже в самой вебморде, логи задания, не лог ошибок php):
Ошибка 2014-02-25 16:03 Описание SNMP оборудования на агенте устарело. При следующем запуске агент получит обновленную версию с сервера.
"Ага, щас!". Несколько раз перезапустив задание, таки понимаю, что с пустым discovery.xml работать оно отказывается (хочет обновить, а в обновлении ничего нет).
Идём в злосчастный snmptool, выбираем все модели, жмём импортировать, получаем фигу ("Действие недоступно"). Включаем телепатию, выбираем только несколько моделей из "обновляемых", опять жмём "импорт". Алилуйя, что-то появилось в discovery.xml. Притом модели как были в "обновляемых", так и остались.
Ещё раз перезапускаем задание и агента, и оно наконец соизволило начать скан сети, притом:
[debug] running task NetDiscovery in process 5065
[info] task NetDiscovery execution not requested
...
[debug] running task NetDiscovery in process 5070
[debug] FusionInventory NetDiscovery task 2.2.0
[debug] [http client] Using Compress::Zlib for compression
... а мог бы и не дождаться.