Содержание
GLPI
GLPI является системой работы с заявками и инцидентами, а также для инвентаризации компьютерного оборудования (компьютеры, программное обеспечение, принтеры и прочее), также имеет расширенные функции, такие как работа системы отслеживания почты с уведомлением и т. д. https://ru.wikipedia.org/wiki/GLPI
Установка
Показано на примере Ubuntu server 16.03 LTS + LAMP + SSH server.
sudo -i # Статический IP nano /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.2.32 netmask 255.255.252.0 gateway 192.168.0.254 dns-nameservers 192.168.2.5 192.168.2.2 192.168.2.10
# Необходимые компоненты apt-get install php-ldap php-imap php-apcu php-xml php-xmlrpc php-mbstring php-curl php-gd php-cli # Скачать wget https://github.com/glpi-project/glpi/releases/download/9.2.1/glpi-9.2.1.tgz # Распаковать дистрибутив tar xzf glpi-9.2.1.tgz --strip=1 -C /var/www/html # Дать права веб-серверу chown -R www-data:www-data /var/www/html # Прописать в Апаче AllowOverride All в секции /var/www nano /etc/apache2/apache2.conf AllowOverride All # Перезапуск Апача systemctl restart apache2 # Можно ещё сделать базу заранее: mysql -u root -p -e "create database glpi"; # После этого зайти на веб-интерфейс и пройти мастер настройки # Стандартный логин и пароль - glpi # После успешной установки стереть install/install.php rm /var/www/html/install/install.php
Особенности обновления
Бывают проблемы, если обновлять старый дистрибутив сразу на самую новую версию. Лучше всего обновлять последовательно. Например версию 0.90.2 получилось обновить так: glpi-0.90.5.tar.gz → glpi-9.1.tar.gz → glpi-9.1.1.tgz → glpi-9.1.2.tgz → glpi-9.1.3.tgz → glpi-9.1.4.tgz → glpi-9.1.5.tgz → glpi-9.1.6.tgz → glpi-9.1.7.1.tgz → glpi-9.2.1.tgz (ругнётся, что 9.1.7.1 несовместимая версия, но всё равно обновится).
С плагином редактора форм та же песня - обновление было с версии 0.90-1.3:
wget https://github.com/pluginsGLPI/formcreator/releases/download/2.4.0/glpi-formcreator-2.4.0.tar.bz2 tar xjf glpi-formcreator-2.4.0.tar.bz2 -C /var/www/html/plugins # после этого обновить плагин в веб-интерфейсе wget https://github.com/pluginsGLPI/formcreator/releases/download/2.5.0/glpi-formcreator-2.5.0.tar.bz2 tar xjf glpi-formcreator-2.5.0.tar.bz2 -C /var/www/html/plugins # после этого обновить плагин в веб-интерфейсе wget https://github.com/pluginsGLPI/formcreator/releases/download/2.6.0/glpi-formcreator-2.6.0.tar.bz2 tar xjf glpi-formcreator-2.6.0.tar.bz2 -C /var/www/html/plugins # после этого обновить плагин в веб-интерфейсе
Инвентаризация
Fusion Inventory
wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.2%2B1.0/glpi-fusioninventory-9.2.1.0.tar.bz2 tar xjf glpi-fusioninventory-9.2.1.0.tar.bz2 -C /var/www/html/plugins
Настройки - Дополнения, установить плагин в систему
Администрирование → Организации → Root Entity → вкладка FusionInventory, ввести URL:
http://glpi
Агенты
Скачать
Инструкция по установке (Windows)
Инструкция по установке (Debian & Ubuntu)
Примерный набор ключей для тихой установки на Windows:
fusioninventory-agent_windows-x64_2.3.21.exe /acceptlicense /add-firewall-exception /execmode=service /no-httpd /no-ssl-check /server='http://glpi/plugins/fusioninventory' /S /runnow
Настройка Cron
Настройки → Автоматические задания → выделить нужные (или все) → изменить способ выполнения на CLI
Run the GLPI crontab:
crontab -u www-data -e # Добавить * * * * * /usr/bin/php /var/www/html/front/cron.php &>/dev/null # или echo '* * * * * www-data /usr/bin/php /var/www/html/front/cron.php &>/dev/null' >> /etc/crontab
Инвентаризация SNMP
Установить агента на сервер GLPI (или на ту машину, которая будет опрашивать устройства по SNMP)
# Зависимости для fusioninventory-agent apt-get -y install dmidecode hwdata ucf hdparm perl libuniversal-require-perl libwww-perl libparse-edid-perl libproc-daemon-perl libproc-pid-file-perl libfile-which-perl libxml-treepp-perl libyaml-perl libnet-cups-perl libnet-ip-perl libdigest-sha-perl libsocket-getaddrinfo-perl libtext-template-perl # Зависимости для fusioninventory-agent-task-network apt-get -y install nmap libnet-snmp-perl libcrypt-des-perl libnet-nbname-perl # Скачать wget http://debian.fusioninventory.org/downloads/fusioninventory-agent_2.3.21-2_all.deb wget http://debian.fusioninventory.org/downloads/fusioninventory-agent-task-network_2.3.21-2_all.deb # Установить dpkg -i fusioninventory-agent_2.3.21-2_all.deb dpkg -i fusioninventory-agent-task-network_2.3.21-2_all.deb # Настроить путь к серверу (к плагину FusionInventory): nano /etc/fusioninventory/agent.cfg # Запустить агента: systemctl restart fusioninventory-agent # или перечитать конфигурацию: systemctl reload fusioninventory-agent
Создать диапазон IP: Сеть → Диапазоны IP адресов, затем там же - Add a SNMP authentication, добавить обе версии SNMP, v1 и v2c.
Зайти в свойства агента, который будет собирать информацию по SNMP, включить у него модули «сетевое обнаружение» и «сетевая инвентаризация SNMP». Можно также включить эту функцию у всех агентов.
Сделать задачу сетевого обнаружения (Задачи → Управление задачами). Пометить активной, старт в текущее время, Интервал пробуждения агента - 5 мин. Добавить задание: модуль метода - сетевое обнаружение, в цели добавить диапазоны, созданные ранее, в исполнители - агента, который будет работать с SNMP.
Сделать задачу сетевой инвентаризации (Задачи → Управление задачами). Всё то же самое, что и в задаче обнаружения, только модуль метода - сетевая инвентаризация (SNMP).
Если какие-то принтеры не импортируются, то может быть полезным выключить правило импорта Printer constraint (name), так как некоторые принтеры (например, Kyocera, Sharp, Konica Minolta) имеют пустое имя.
В общих настройках имеет смысл заблокировать местоположение (в принтере зачастую нельзя по-русски написать и это сбивает то, что уже есть в GLPI) и название (если принтеры уже есть в GLPI и тогда при импорте названия могут затереться по причине, указанной выше).
OCS inventory
Здесь описана старая версия, и вообще рекомендуется использовать FusionInventory
# Зависимости sudo apt-get install php-imap php-ldap make libapache-dbi-perl libxml-simple-perl libnet-ip-perl libsoap-lite-perl php-soap libphp-pclzip php-gd # Модули Perl cpan -i XML::Entities cpan -i Compress::Zlib # Скачать wget https://launchpad.net/ocsinventory-server/stable-2.1/2.1.1/+download/OCSNG_UNIX_SERVER-2.1.1.tar.gz # Распаковать и установить tar -zxvf OCSNG_UNIX_SERVER-2.1.1.tar.gz cd OCSNG_UNIX_SERVER-2.1.1 ./setup.sh # Where is Apache main configuration file [] ? /etc/apache2/apache2.conf # Where is Apache Include configuration directory [] ? /etc/apache2/sites-available nano /etc/apache2/sites-available/000-default.conf #add the line just above the closing "" directive. Alias /ocsreports /usr/share/ocsinventory-reports service apache2 restart
Удаление агента с клиентских машин
IF EXIST "%programfiles(x86)%\OCS Inventory Agent\uninst.exe" ( "%programfiles(x86)%\OCS Inventory Agent\uninst.exe" /s ) IF EXIST "%programfiles%\OCS Inventory Agent\uninst.exe" ( "%programfiles%\OCS Inventory Agent\uninst.exe" /s )
Решение проблем
Table 'glpi.glpi_logs' doesn't exist
При обновлении версии GLPI идёт ругань примерно такого вида:
9.3 migrate Ticket solution history - Ошибка во время запроса базы данных: REPLACE INTO `glpi_itilsolutions` (itemtype, items_id, date_creation, users_id, user_name, solutiontypes_id, content, status, date_approval) SELECT 'Ticket' AS itemtype, ticket.`id` AS items_id, ticket.`solvedate` AS date_creation, IF(log.user_name REGEXP '[(][0-9]+[)]$', SUBSTRING_INDEX(SUBSTRING_INDEX(log.`user_name`, '(', -1), ')', 1), 0) AS users_id, IF(log.user_name REGEXP '[(][0-9]+[)]$', NULL, log.`user_name`) AS user_name, ticket.`solutiontypes_id` AS solutiontypes_id, ticket.`solution` AS content, (CASE WHEN ticket.status = 6 THEN 3 – if CLOSED, ACCEPTED WHEN ticket.status = 5 THEN 2 – if SOLVED, WAITING WHEN ticket.status ⇐ 4 THEN 4 – if INCOMING|ASSIGNED|PLANNED, REFUSED ELSE 1 – else NONE END) AS status, ticket.`closedate` AS date_approval FROM glpi_tickets AS ticket LEFT JOIN `glpi_logs` AS log ON log.`itemtype` = 'Ticket' AND log.`items_id` = ticket.`id` AND log.`id_search_option` = 24 WHERE LENGTH(ticket.`solution`) > 0 GROUP BY ticket.`id` ORDER BY ticket.`id` ASC, log.id DESC - Ошибка - Table 'glpi.glpi_logs' doesn't exist
Решение: создать таблицу glpi_logs заново, и затем снова запустить обновление:
# DROP TABLE IF EXISTS `glpi_logs`; CREATE TABLE `glpi_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `itemtype` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `items_id` int(11) NOT NULL DEFAULT '0', `itemtype_link` varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `linked_action` int(11) NOT NULL DEFAULT '0' COMMENT 'see define.php HISTORY_* constant', `user_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `date_mod` datetime DEFAULT NULL, `id_search_option` int(11) NOT NULL DEFAULT '0' COMMENT 'see search.constant.php for value', `old_value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `new_value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), KEY `date_mod` (`date_mod`), KEY `itemtype_link` (`itemtype_link`), KEY `item` (`itemtype`,`items_id`), KEY `id_search_option` (`id_search_option`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
https://github.com/glpi-project/glpi/blob/9.3/bugfixes/install/mysql/glpi-empty.sql#L4255
N tables not migrated to InnoDB engine
После входа в GLPI показывается сообщение типа
355 tables not migrated to InnoDB engine.
Решение: выполнить скрипт
php /var/www/html/scripts/innodb_migration.php
Полезные команды
# Ремонт базы: mysqlcheck -u root -p1111111 -r --databases glpi # Проверка базы: mysqlcheck -u root -p1111111 -c --databases glpi # Бэкап базы: mysqldump -u root -p glpi > /usr/share/glpi/_files/dumps/$ (date +%Y-%m-%d).glpi.backup.sql # Восстановление базы: mysql -u root -p glpi < /usr/share/glpi/files/_dumps/glpi-backup.sql