GLPI (Inventaire de parc)

Environnement

  • Conteneur LXC Proxmox
  • Ubuntu 20.04

1. GLPI

Installer Apache, PHP et MariaDB :

apt install apache2 mariadb-server php7.4 libapache2-mod-php7.4 php7.4-intl php7.4-bz2 php7.4-mysql php7.4-mbstring php7.4-curl php7.4-gd php7.4-imap php7.4-cli php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-ldap php-apcu php-cas

Activer le module de réécriture d'URL et redémarrer Apache :

a2enmod rewrite
systemctl restart apache2

Télécharger et décompresser la dernière version stable de glpi :

cd /var/www/
wget https://github.com/glpi-project/glpi/releases/download/9.5.3/glpi-9.5.3.tgz
tar zxvf glpi-9.5.3.tgz
rm glpi-9.5.3.tgz
chown www-data:www-data -R /var/www/glpi

Créer le virtualhost :

mv /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak
nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    ServerName      glpi.ucpt.fr
    DocumentRoot    /var/www/glpi/

    <Directory /var/www/glpi/>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    LogLevel    warn
    ErrorLog    /var/log/apache2/glpi-error.log
    CustomLog   /var/log/apache2/glpi-access.log combined
</VirtualHost>

Configurer les fichiers php.ini :

cp -p /etc/php/7.4/apache2/php.ini /etc/php/7.4/apache2/php.ini.bak
cp -p /etc/php/7.4/cli/php.ini /etc/php/7.4/cli/php.ini.bak
sed -i 's,upload_max_filesize = 2M,upload_max_filesize = 16M,g' /etc/php/7.4/apache2/php.ini
sed -i 's,upload_max_filesize = 2M,upload_max_filesize = 16M,g' /etc/php/7.4/apache2/php.ini
sed -i 's,memory_limit = 128M,memory_limit = 256M,g' /etc/php/7.4/apache2/php.ini
sed -i 's,max_execution_time = 30,max_execution_time = 600,g' /etc/php/7.4/apache2/php.ini
sed -i 's,memory_limit = 128M,memory_limit = 256M,g' /etc/php/7.4/cli/php.ini
sed -i 's,max_execution_time = 30,max_execution_time = 600,g' /etc/php/7.4/cli/php.ini

Redémarrer le serveur Apache :

systemctl restart apache2

Sécuriser l'installation de MariaDB :

mysql_secure_installation

Se connecter à MariaDB et modifier le mode de connexion pour passer du compte root "système" au compte root "MariaDB" :

mysql -u rootUSE mysql;UPDATE user SET plugin='' WHERE User='root';FLUSH PRIVILEGES;exit;

Se connecter à MariaDB et créer la base de données pour GLPI :

mysql -u root -pCREATE DATABASE glpi;CREATE USER 'glpi-admin'@'localhost' IDENTIFIED BY 'mot_de_passe';GRANT ALL PRIVILEGES ON glpi.** TO 'glpi-admin'@'localhost';FLUSH PRIVILEGES;exit;

Dans un navigateur, se connecter au serveur GLPI http://mon.serveur.glpi.tld/install/install.php et poursuivre l'installation.

Supprimer le fichier rm /var/www/glpi/install/install.php :

rm /var/www/glpi/install/install.php

Pour gérer les fuseaux horaires :

mysql -u root -pGRANT SELECT ON mysql.time_zone_name TO 'yourglpiuser'@'localhost';FLUSH PRIVILEGES;exit;cd /var/www/glpisudo bin/console glpi:migration:timestamps

Aller à l'adresse http://mon.serveur.glpi.tld/front/preference.php et choisir le fuseau.

2. FusionInventory

Télécharger et décompresser le plugin FusionInventory :

cd /var/www/glpi/pluginswget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.5.0+1.0/fusioninventory-9.5.0+1.0.tar.bz2tar xjvf fusioninventory-9.5.0+1.0.tar.bz2rm fusioninventory-9.5.0+1.0.tar.bz2chown www-data:www-data -R /var/www/glpi

Aller dans le menu Configuration -> Plugins, installer puis activer le plugin FusionInventory.

Aller dans le menu Administration -> FusionInventory si le message Le cron de GLPI ne fonctionne pas, voir documentation est présent, exécuter les commandes suivantes :

crontab -u www-data -e
*/1 * * * * /usr/bin/php7.4 /var/www/glpi/front/cron.php &>/dev/null

Redémarre le service Cron :

systemctl restart cron

Dans l'interface web, aller dans Configuration -> actions automatiques -> taskscheduler et cliquer sur le bouton Exécuter

3. FusionInventory Agent

3.1. Linux

Installer les dépendances pour l'agent Linux :

apt -y install dmidecode hwdata ucf hdparm perl libuniversal-require-perl libwww-perl libparse-edid-perl libproc-daemon-perl libfile-which-perl libhttp-daemon-perl libxml-treepp-perl libyaml-perl libnet-cups-perl libnet-ip-perl libdigest-sha-perl libsocket-getaddrinfo-perl libtext-template-perl libxml-xpath-perl libyaml-tiny-perl libnet-snmp-perl libcrypt-des-perl libnet-nbname-perl libdigest-hmac-perl libfile-copy-recursive-perl libparallel-forkmanager-perl libxml-parser-perl

Téléchager les paquets et les installer :

cd /tmpwget https://github.com/fusioninventory/fusioninventory-agent/releases/download/2.6/fusioninventory-agent_2.6-1_all.debwget https://github.com/fusioninventory/fusioninventory-agent/releases/download/2.6/fusioninventory-agent-task-collect_2.6-1_all.debwget https://github.com/fusioninventory/fusioninventory-agent/releases/download/2.6/fusioninventory-agent-task-network_2.6-1_all.debwget https://github.com/fusioninventory/fusioninventory-agent/releases/download/2.6/fusioninventory-agent-task-deploy_2.6-1_all.debwget https://github.com/fusioninventory/fusioninventory-agent/releases/download/2.6/fusioninventory-agent-task-esx_2.6-1_all.debdpkg -i fusioninventory-agent_2.6-1_all.debdpkg -i fusioninventory-agent-task-collect_2.6-1_all.debdpkg -i fusioninventory-agent-task-network_2.6-1_all.debdpkg -i fusioninventory-agent-task-deploy_2.6-1_all.debdpkg -i fusioninventory-agent-task-esx_2.6-1_all.deb

Éditer le fichier /etc/fusioninventory/agent.cfg pour configurer l'agent :

nano /etc/fusioninventory/agent.cfg# send tasks results to a FusionInventory for GLPI server    server =  http://glpi.mon.serveur/plugins/fusioninventory/

Activer et démarre l'agent :

systemctl enable fusioninventory-agentsystemctl start fusioninventory-agent

Exécuter l'agent :

fusioninventory-agent

3.2. VMware

Depuis une machine GNU/Linux, installer l'agent fusioninventory-agent-task-esx :

apt install libfusioninventory-agent-task-esx-perl

Éxécuter la commande suivante pour récupérer les données des ESXi :

fusioninventory-esx --host ip_vcenter --user vcenter_user --password 'vcenter_password' --directory /tmp

Intégrer les données à partir de l'interface web (Administration -> FusionInventory -> Tâches -> Importer un fichier XML de l'agent) ou par la commande suivante :

fusioninventory-injector -v --file /tmp/esx-2020-01-28-19-03-46.ocs -u http://glpi.mon.serveur/plugins/fusioninventory/

3.3. SNMP

Les agents du serveur GLPI seront utilisés pour la découverte réseau.

Aller dans Administration -> FusionInventory -> Général -> Gestion des agents et choisir le serveur GLPI. Dans le menu Module des agents, cocher toutes les cases.

3.3.1. Imprimantes

3.3.1.1. Méthode automatique

3.3.1.1.1 Détection des imprimantes

Aller dans Administration -> FusionInventory -> Réseau -> Plages IP, et ajouter la plage IP contenant les imprimantes.

Au sein de cette plage IP, aller dans Identifiants SNMP associés et associer Public community v2c.

Aller dans Administration -> FusionInventory -> Règles -> Règles d'import et de liaison des matériels et activer les règles suivantes :

  • Printer update (by mac)
  • Printer import (by mac)

Aller dans Administration -> FusionInventory -> Tâches -> Gestion des tâches et ajouter une nouvelle tâche Imprimantes - Découverte réseau.

Cocher les cases Re-préparer un job si l'exécution précédente était un succès : et Actif :

Au sein de cette tâche, aller dans Configuration des jobs et ajouter un nouveau job avec comme méthode du module Découverte réseau.

Ajouter la plage IP précédemment créée comme cible, le serveur GLPI comme acteur et mettre à jour.

Aller dans Parc -> Ordinateurs -> serveur GLPI et cliquer sur la double-flèche circulaire suivant Statut : pas encore demandé, rafraîchir ? puis sur le bouton Forcer l'inventaire afin de lancer le job de découverte réseau.

Le résultat de la découverte réseau est disponible dans le menu Administration -> FusionInventory -> Tâches -> Gestion des tâches- > Exécutions des jobs.

3.3.1.1.2. Récupérations des informations via SNMP

Aller dans Administration -> FusionInventory -> Tâches -> Gestion des tâches et ajouter une nouvelle tâche Imprimantes - SNMP.

Cocher les cases Re-préparer un job si l'exécution précédente était un succès : et Actif :

Au sein de cette tâche, aller dans Configuration des jobs et ajouter un nouveau job avec comme méthode du module SNMP.

Ajouter les imprimantes précédemment trouvées comme cible et le serveur GLPI comme acteur.

Aller dans Parc -> Ordinateurs -> serveur GLPI et cliquer sur la double-flèche suivant Statut : pas encore demandé, rafraîchir ? puis sur le bouton Forcer l'inventaire afin de lancer le job de découverte réseau.

Le résultat de la découverte réseau est disponible dans le menu Administration -> FusionInventory -> Tâches -> Gestion des tâches- > Exécutions des jobs.

/!\ Selon les refus d'importation, il faudra désactiver (temporairement ou pas) la règle :

  • Printer constraint (name)

3.3.1.2. Méthode manuelle

Lancer la commande suivante afin de récupérer les données de l'imprimante dans un fichier XML :

fusioninventory-netinventory --host imprimante_ip --credentials version:2c,community:public --type PRINTER > mon_imprimante.xml

Importer le contenu du fichier dans GLPI :

fusioninventory-injector -v --file mon_imprimante.xml -u http://glpi.mon.serveur/plugins/fusioninventory/

3.3.2. Switches

3.3.2.1. Méthode automatique

Aller dans Administration -> FusionInventory -> Réseau -> Plages IP, et ajouter la plage IP contenant les switches.

Au sein de cette plage IP, aller dans Identifiants SNMP associés et associer Public community v2c

Aller dans Administration -> FusionInventory -> Tâches -> Gestion des tâches et ajouter une nouvelle tâche Découverte Réseau Switches

Cocher les cases Re-préparer un job si l'exécution précédente était un succès : et Actif :

Au sein de cette tâche, aller dans Configuration des jobs et ajouter un nouveau job avec comme méthode du module Découverte réseau

Ajouter la plage IP précédemment créée comme cible et le serveur GLPI comme acteur

Aller dans Parc -> Ordinateurs -> serveur GLPI et cliquer sur la double-flèche suivant Statut : pas encore demandé, rafraîchir ? puis sur le bouton Forcer l'inventaire afin de lancer le job de découverte réseau

Le résultat de la découverte réseau est disponible dans le menu Administration -> FusionInventory -> Tâches -> Gestion des tâches- > Exécutions des jobs

3.3.2.2. Méthode manuelle

Lancer la commande suivante afin de récupérer les données du switch dans un fichier XML :

fusioninventory-netinventory --host switch_ip --credentials version:2c,community:public --type NETWORKING > mon_switch.xml

Importer le contenu du fichier dans GLPI :

fusioninventory-injector -v --file mon_switch.xml -u http://glpi.mon.serveur/plugins/fusioninventory/

3.4. Android

/!\ Le serveur GLPI étant sur le réseau local, la remontée de données depuis un appareil Android ne fonctionnera qu'en Wi-Fi local.

Télécharger et installer le client GLPI Agent (org.glpi.inventory.agent) à partir du Play Store ou de Aurora Store

Lancer l'application et cliquer sur le bouton en bas à droite puis sur Advanced Settings -> Open List Servers -> Add Server

L'adresse du serveur doit être du type : http://mon.serveur.glpi.tld/plugins/fusioninventory/front/plugin_fusioninventory.communication.php

3.5. Windows (Déploiement silencieux)

Ajouter un enregistrement DNS sur le controleur de domaine pour le serveur GLPI

Télécharger les fichiers suivants :

  • fusioninventory-agent_windows-x64_2.6.exe (https://github.com/fusioninventory/fusioninventory-agent/releases/)
  • fusioninventory-agent-deployment.vbs (https://github.com/fusioninventory/fusioninventory-agent/tree/develop/contrib/windows)
  • FusionInventory.adml (https://github.com/fusioninventory/fusioninventory-agent/tree/develop/contrib/windows)
  • FusionInventory.admx (https://github.com/fusioninventory/fusioninventory-agent/tree/develop/contrib/windows)

Sur le contrôleur de domaine :

  • placer fusioninventory-agent_windows-x64_2.6.exe dans \\dc_server\applications$

  • placer fusioninventory-agent-deployment.vbs dans \\dc_server\NETLOGON

  • placer FusionInventory.admx dans \\dc_server\sysvol\ucpt.fr\Policies\PolicyDefinitions
  • placer FusionInventory.adml dans \\dc_server\sysvol\ucpt.fr\Policies\PolicyDefinitions\fr-FR
  • placer FusionInventory.adml dans \\dc_server\sysvol\ucpt.fr\Policies\PolicyDefinitions\en-US

Éditer le fichier fusioninventory-agent-deployment.vbs et configurer les paramètres suivants :

  • SetupVersion = "2.6"
  • SetupArchitecture = "x64"
  • SetupOptions = "/acceptlicense /runnow /execmode=service /add-firewall-exception /tag=SIEGE /server='http://glpi.mon.serveur/plugins/fusioninventory/' /S"

Sur le contrôleur de domaine, créer un GPO Deploiement FusionInventory et le modifier.

Naviguer jusqu'au dossier Configuration ordinateur -> Stratégies -> Paramètres Windows -> Scripts (démarrage/arrêt) et éditer le paramètre Démarrage et ajouter le script fusioninventory-agent-deployment.vbs (\\domain.lan\SysVol\domain.lan\scripts\fusioninventory-agent-deployment.vbs)

Naviguer jusqu'au dossier : Configuration ordinateur -> Stratégies -> Modèles d'administration -> Système -> Fusion Inventory et modifier Configure the agent :

  • Server : http://glpi.mon.serveur/plugins/fusioninventory/
  • Tag : SIEGE

Lier le GPO à une ou plusieures OU.

Sources

https://glpi-project.org/DOC/FR/glpi/preface.html

https://www.osradar.com/how-to-install-glpi-on-ubuntu-server-18-04/

http://fusioninventory.org/documentation/fi4g/cron.html

http://fusioninventory.org/documentation/agent/installation/linux/deb.html

https://www.it-connect.fr/glpi-fusioninventory-comment-inventorier-un-appareil-android

https://www.it-connect.fr/deployer-lagent-fusion-inventory-par-gpo/

https://www.dsfc.net/logiciel-libre/glpi/installation-silencieuse-agent-fusioninventory-windows/

https://openclassrooms.com/fr/courses/1730516-gerez-votre-parc-informatique-avec-glpi

http://fusioninventory.org/documentation/tasks/esxinventory/