main

Обновление 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

... а мог бы и не дождаться.