GLPI (Gestionnaire Libre de Parc Informatique) – это open-source ITSM система для работы с заявками и инцидентами, а также для инвентаризации оборудования и программного обеспечения.
GLPI поддерживает:
- Инвентаризацию компьютеров, периферийного оборудования, сетевых принтеров и связанных компонентов через плагины
- Управление заявками и инцидентами
- Управление лицензиями, договорами (ITIL)
- Связывание пользователей и групп по географическому положению
- Управление деловой и финансовой информацией (договоры)
- Управление статусом объектов
- Поддержка базы знаний и Часто задаваемых вопросов (FAQ)
- Генераторы отчетов
- Поддерживаются базы данных MySQL/MariaDB
- Поддержка UTF8
- Система оповещения о событиях
Функциональность GLPI может быть расширена с помощью плагинов. Может использоваться в качестве CMDB.
github.com/glpi-project/glpi/releases
Сегодня нас интересует автоматизация инвентаризации vCenter, хостов ESXi и виртуальных машин.
Раньше для этих целей использовался плагин FusionInventory, теперь вместо него GLPI Inventory. Следует знать, что плагин glpiinventory — это форк плагина fusioninventory, который был создан и поддерживается командой ядра GLPI для совместимости со старыми приложениями. Вероятно, когда все функции плагина GLPI Inventory будут перенесены в GLPI, плагин перестанет существовать. Возможно, именно поэтому нет никакой документации для GLPI Inventory.
github.com/glpi-project/glpi-inventory-plugin
GLPI Inventory поддерживает выполнение задач:
- Сетевое обнаружение и инвентаризация (SNMP)
- Развёртывание ПО
- Удалённая инвентаризация VMWare ESX хостов
- Сбор данных (файлы, реестр Windows, WMI)
Сразу отметим важную вещь. Плагин GLPI Inventory выполняет задачи через агента GLPI Agent. Т.е. сервер GLPI будет коннектиться к какому-то агенту (я буду использовать агент на самом сервере GLPI) и давать ему указания выполнить ту или иную задачу. Соответственно, агент должен уметь работать в VMware. Для этого понадобится можно скачать для агента дополнительный пакет для задачи ESX
github.com/glpi-project/glpi-agent
Скачиваю для своей версии агента на GLPI нужный пакет glpi-agent-task-esx_1.7.3-1_all.deb и устанавливаю.
dpkg -i glpi-agent-task-esx_1.7.3-1_all.deb
service glpi-agent restart
Перезапускаем агент и форсируем обмен данными с GLPI:
service glpi-agent restart
glpi-agent --force
Подразумевается, что у нас всё установлено, настроено и работает. Агент мониторится.
Устанавливаем плагин GLPI. Заметим, что сначала я поставил FusionInventory, но он не захотел работать:
This plugin requires GLPI >= 10.0.6 and < 10.0.7.
Конфигурируем плагин. Активируем модуль VMware host remote inventory.
Здесь можно добавить исключения для агентов, которые не будут использоваться. Не знаю зачем.
Переходим к настройке агента, который мы будем использовать для инвентаризации vCenter. GLPI Inventory → General → Agents management.
Находим агент.
Убеждаемся, что агент поддерживает сканирование ESXi. В разделе Agents в блоке Supported Tasks должна стоять галка:
- ESX Remote Inventory.
Переключаемся в раздел Agents modules и включаем галку:
- VMware host remote inventory
Сохраняем конфигурацию, Update.
Создаем в vCenter локального пользователя, например, glpi-vcenter. Даём ему права на чтение.
GLPI Inventory → Networking → Authentication for remote devices (VMware). Добавляем пользователя для аутентификации, которого мы создали. Указываем логин (он будет glpi-vcenter@vsphere.local) и пароль.
GLPI Inventory → Networking → Remote devices to inventory (VMware). Добавляем vCenter (или хост ESXi).
Понадобится указать IP и пользователя, под которым логиниться.
ДОСТУПЫ: Агенту GLPI, который мы будем использовать, потребуется доступ к vCenter по TCP 443.
GLPI Inventory → Tasks → Task management. Создаём задачу.
Указываем в разделе Task management название и поля:
- Permit to re-prepare task after run — включаем
- Active — включаем
- Schedule start — не указываем
- Schedule end — не указываем
- Preparation timeslot — временно не указываем, потом настроите как вам нужно
- Execution timeslot — временно не указываем, потом настроите как вам нужно
- Agent wakeup interval (in minutes — 1 минута
- Number of agents to wake up — 1
Save.
В разделе Job configuration добавляем:
- Module method — VMware host remote inventory
- Targets — выбираем добавленный vCenter или ESXi хост
- Actors — выбираем агента, который мы будем использовать для инвентаризации vCenter
Update.
Возвращаемся в раздел Task management: Force start.
Переходим в раздел Job Executions. Сначала наша задача висит в Not done yet в статусе Prepared.
Для выполнение задачи нужно, чтобы агент GLPI синхронизировался с сервером GLPI. Можно его пнуть:
glpi-agent --force
Агент начнёт выполнять задачу ESX.
Задача в статусе Running.
Минут через N-дцать задача выполнится, Successful.
Мы инвентаризировали vCenter, хосты и виртуалки в полуручном режиме. Осталось настроить слоты времени, с этим сами справитесь, я пока сам до конца не разобрался как лучше сделать.
Доработки
Вот эту галку надо: "Re-prepare successful jobs". Save.
Автоматизация
Создаём временные слоты.
Сначала создадим временный слот для подготовки, когда будем "взводить" задачу на сканирование.
- vCenter Prepare Time slot
Второй слот для выполнения.
- vCenter Execute Time slot
Редактируем задачу. Указываем наши слоты в полях:
- Preparation timeslot — vCenter Prepare Time slot
- Execution timeslot — vCenter Execute Time slot
Запуск, естественно, будет выполняться в тот момент времени, когда произойдёт синхронизация агента.
Ну и самое главное, GLPI должен уметь выполнять задачи по расписанию, нужно настроить CRONTAB!
sudo -u www-data crontab -e
И добавляем ежеминутный запуск крона, путь свой укажите:
* * * * * php /var/www/html/glpi/front/cron.php