Installation/Configuration de GLPI Mise en situation Après une étude des besoins exprimés par la PME chez qui vous mettez en place une nouvelle infrastructure réseau, la réalisation d’un audit pour se rendre compte du matériel informatique présent dans les locaux et la prise en compte des contraintes budgétaires, vous proposez la mise en place d’une solution de gestion de parc informatique libre nommée GLPI. Cette solution — de plus en plus répandue en raison de sa qualité malgré sa gratuité — est une application web écrite en PHP qui propose les services suivants : Assistance aux utilisateurs par l’intermédiaire d’un système de remontée d’incident ou de demande d’assistance par le biais de “tickets” saisis directement dans l’interface web publique de GLPI Service d’inventaire manuel ou automatique par l’intermédiaire d'“agents” installées sur les postes du parc informatique à gérer Prévisions/historique des actions de maintenance Gestion des tâches administratives et financières des actifs matériels et logiciels (amortissement, licences logicielles…) Dans cette activité vous allez : Installer l’application GLPI de base sur un serveur Linux virtualisé dans Windows Configurer GLPI de façon à permettre à un utilisateur d’émettre un ticket d’assistance Installer la fonctionnalité d’inventaire automatique des postes du parc informatique Accès SSH Vous allez intéragir avec la machine virtuelle Linux sur laquelle vous devez installer GLPI depuis un poste Windows à l’aide d’un client SSH (→ PuTTY). En effet, les serveurs d’entreprises sont généralement placés dans des pièces dédiées dans lesquelles il n’y a pas de postes de travail et où il ne fait généralement pas très chaud à cause de la climatisation destinée à refroidir les machines. Il faut donc considérer que la machine Windows et la machine virtuelle Linux sont 2 machines physiques différentes même si dans le cadre de cette activité vous n’utiliserez — pour des raisons évidentes de disponibilité du matériel — qu’un seul PC (→ celui identifié “VIR_SERV” dans le schéma de l’infrastructure réseau.). 🖮 Travail n° 1 : Accès SSH Exécuter la machine virtuelle OpenSUSE Se connecter sur le système Linux depuis le terminal affiché dans VMware Player avec l’identifiant root et le mot de passe admin puis récupérer son adresse IP (→ commande ip addr) de façon à pouvoir y accéder par la suite depuis Windows. login as: root (1) Using keyboard-interactive authentication. Password: (2) Last login: Thu Sep 17 10:07:26 2020 from 192.168.5.4 Have a lot of fun... localhost:~ # ip addr (3) 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:d5:45:52 brd ff:ff:ff:ff:ff:ff inet 192.168.5.22/24 brd 192.168.5.255 scope global eth0 (4) valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fed5:4552/64 scope link valid_lft forever preferred_lft forever localhost:~ # 1 Connexion avec l’identifiant root 2 Saisie du mot de passe → admin 3 Exécution de la commande ip addr pour obtenir l’adresse IP de la machine virtuelle 4 Récupération de l’adresse IP. Ici, 192.168.5.22. Doit faire partie du même réseau que la machine Windows qui l’héberge (← interface réseau en mode “Bridged”) Réduire la fenêtre VMware Player et se connecter à la machine virtuelle avec le logiciel Windows nommé PuTTY après avoir renseigné l’adresse IP de votre propre machine virtuelle. Ce logiciel est un émulateur de terminal doublé d’un client telnet puis SSH. C’est cette dernière caractéristique qui nous intéresse ici et qui va nous permettre de nous connecter à distance à un serveur SSH (→ la machine virtuelle) et ce, de manière sécurisée (→ échanges chiffrés). Si la connexion à travers PuTTY échoue, cela peut provenir du fait que le port SSH n’a pas été ouvert dans le pare-feu lors de l’installation. Pour remédier à cet oubli, saisir dans le terminal les commandes suivantes : # firewall-cmd --permanent --add-service=ssh # firewall-cmd --reload Cela peut également provenir du fait que le service n’a simplement pas été activé. L’activer alors avec : # systemctl enable sshd.service # systemctl start sshd.service À partir de maintenant, toutes les commandes/actions sur la machine virtuelle devront être réalisées depuis PuTTY (et non la console affichée dans VMware) Installation des paquets logiciels requis GLPI est une application web codée en PHP articulée autour d’une base de données. Elle nécessite donc la présence sur le PC : d’un serveur web → Apache d’un environnement PHP → PHP7 d’un serveur de bases de données → MariaDB Vous allez à présent installer ces différents composants. 🖮 Travail n° 2 Installation des paquets logiciels requis Lancer la commande yast2 depuis le terminal de PuTTY. Celle-ci provoque l’affichage d’une interface semi-graphique du panneau de contrôle YaST dans laquelle on peut naviguer avec les touches TAB et Shift+TAB. Le déplacement sur les options d’une même rubrique se fait avec les touches ↑ et ↓ L’activation d’une option se fait avec la barre d’espace On peut accéder directement à une rubrique en enfonçant la touche Alt puis en tapant la lettre qui est affichée en jaune dans l’intitulée de la rubrique Si les cadres n’apparaissent pas correctement dans PuTTY, s’assurer dans sa configuration que le jeu de caractères utilisé est conforme à celui spécifié dans le screenshot suivant : Procéder à l’installation des paquets logiciels suivants à partir de la rubrique Software Software Managment de YaST : Le marquage d’un paquet pour demander son installation se fait en appuyant sur la barre d’espace après l’avoir sélectionné. php7 : langage PHP dans sa version 7 php7-fileinfo, php7-ldap, php7-xmlrpc, php7-opcache, php7-mysql, php7-zlib, php7-curl, php7-gd, php7-mbstring, php7-APCu, php7-intl, php7-exif, php7-sodium: librairies PHP requises par GLPI apache2 + apache2-mod_php7 : serveur Web Apache avec module PHP7 yast2-http-server : plugin de l’outil d’administration YaST pour la gestion “basique” du serveur Web mariadb : Base de donnée MariaDB (fork communautaire de MySQL) avec boite à outils phpMyAdmin : application web d’administration de bases de donnés MariaDB Installation des fichiers de l’application GLPI GLPI n’existe pas sous forme de paquet logiciel (→ package) dans OpenSUSE. GLPI est uniquement distribué sous la forme d’une archive extractible. Vous allez donc devoir installer les fichiers de GLPI manuellement sur OpenSUSE en les copiant depuis votre machine Windows. Ceci se fera en plusieurs étapes : Copie de l’archive de GLPI sur la machine virtuelle. Celle-ci vous est fournie en ressources mais peut être téléchargée depuis le site Désarchivage sur la machine virtuelle Modification du propriétaire et droits d’accès sur les fichiers extraits 🖮 Travail n° 3 Copie des fichiers de GLPI Depuis la console Windows, copier l’archive contenant GLPI sur la machine virtuelle via la commande pscp.exe de PuTTY. Pour cela : Télécharger sur Windows l’archive .tgz contenant GLPI Lancer une console Windows (→ taper cmd dans le menu “Démarrer”) En considérant que : PuTTY est installé dans le répertoire c:\bin\PuTTY, l’archive téléchargée est dans C:\Users\claud\Downloads l’adresse IP de la machine virtuelle est 192.168.5.22, saisir la commande suivante pour copier l’archive, en tant qu’utilisateur root, sur la machine virtuelle : C:\Users\claud> C:\bin\PuTTY\pscp - P 22 C:\USers\claud\Downloads\glpi-9.5.1.tgz root@192.168.5.22: Ne pas oublier les 2 points (→ ‘:’) à la fin de la commande. S’authentifier avec le mot de passe admin pour procéder à la copie Microsoft Windows [version 10.0.19041.508] (c) 2020 Microsoft Corporation. Tous droits réservés. C:\Users\claud>c:\bin\PuTTY\pscp.exe -P 22 c:\Users\claud\Downloads\glpi-9.5.1.tgz root@192.168.5.22: Using keyboard-interactive authentication. Password: (1) glpi-9.5.1.tgz | 42166 kB | 1081.2 kB/s | ETA: 00:00:00 | 100% C:\Users\claud> 1 Mot de passe de la machine virtuelle → admin Le téléversement de l’archive sur la machine virtuelle peut également se faire de manière graphique grâce au logiciel WinSCP . depuis l’invite de commande de PuTTY, saisir la commande Linux suivante qui permet d’extraire l’archive de GLPI dans le répertoire racine des sites servis par le serveur Web (→ /srv/www/htdocs) # tar -xzvf glpi-9.5.1.tgz -C /srv/www/htdocs/ Pour l’instant, le répertoire /srv/www/htdocs/glpi/ appartient à l’utilisateur root et seul celui-ci peut y écrire. Or, il vaut mieux que son propriétaire soit l’utilisateur associé au serveur Web Apache qui servira l’application GLPI. Sous OpenSUSE, l’utilisateur Apache se nomme wwwrun et il fait partie du group www. De plus, la procédure d’installation de GLPI indique que seuls les sous-répertoires files/ et config/ du répertoire glpi/ nécessitent un droit d’écriture. Vous allez donc procéder à ces modifications. 🖮 Travail n° 4 Modification des droits sur les fichiers de GLPI Changer le propriétaire ainsi que les droits d’accès de l’arborescence de fichiers du site GLPI # cd /srv/www/htdocs # chown -R wwwrun:www glpi/ (1) # chmod -R a-w glpi/ (2) # chmod -R u+w glpi/files/ glpi/config/ glpi/marketplace (3) 1 On change change le propriétaire et le groupe de l’arborescence de fichiers /srv/www/htdocs/glpi/ 2 On retire le droit d’écriture pour tout le monde (→ a-w) sur l’arborescence de fichiers /srv/www/htdocs/glpi/ 3 On accorde enfin le droit d’écriture sur les sous-répertoires files/, config/ et marketplace pour leur propriétaire uniquement (→ u+w) Configuration du serveur Web Bien que le serveur Web Apache ait été installé sur la machine virtuelle fournie, celui-ci n’a été ni démarré ni configuré pour accueillir l’application GLPI. Vous allez à présent le démarrer et le configurer qu’il mette à disposition de l’utilisateur 2 sites Web qui hébergeront, pour le 1er, l’application GLPI proprement dîte et, le 2ème, l’application phpMyAdmin qui est une interface web d’administration de base de données. phpMyAdmin simpliera la création et la gestion de la base de données dans laquelle GLPI stocke toutes les informations du parc informatique. La possibilité qu’offre Apache de servir plusieurs sites web passe par la configuration de ce qu’on appelle des hôtes virtuels (virtual hosts ou plus simplement vhosts). C’est ce que vous allez faire maintenant depuis l’outil d’administration d'OpenSUSE (→ YaST) auquel a été ajouté, lors de la création de la machine virtuelle, le plugin d’administration de serveur web (→ package yast2-http-server). 🖮 Travail n° 5 Configuration serveur HTPP Lancer la commande yast2 depuis le terminal de PuTTY. Suivre les indications du diaporama qui suit pour créer les hôtes virtuels qui hébergeront l’application GLPI puis phpMyAdmin Le diaporama représente l’assistant de configuration du serveur HTTP de YaST qui n’est exécuté que la 1ère fois qu’il est appelé. Si pour une raison ou une autre, vous relancez la configuration depuis la page d’accueil de YaST, vous aboutirez à la fenêtre de configuration du serveur en mode “Expert”. Une configuration identique à celle du diaporama sera toujours possible. La seule différence sera que les options à configurer devront être sélectionnées depuis les “onglets” de la fenêtre de configuration. Vous avez désormais 2 sites web qui sont hébergés sur 1 seule machine. La différenciation entre les sites Web de la machine peut se faire de plusieurs manières : par nom, par IP, par numéro de port. Lorsque vous avez configuré vos hôtes virtuels, la méthode de différenciation sélectionnée par défaut est celle qui se base sur le nom car c’est celle qui est généralement recommandée. De façon à pouvoir accéder à ces 2 sites depuis votre navigateur exécuté depuis Windows, vous allez devoir mettre en place une résolution de nom d’hôtes. Cette résolution se fera ici de manière basique en renseignant le fichier hosts de Winodws avec les adresses IP des 2 hôtes virtuels. 🖮 Travail n° 6 Résolution de noms Depuis Windows, ouvrir le Bloc Notes en tant qu’administrateur (cliquer droit sur l’application Bloc-notes puis sélectionner “Exécuter en tant qu’administrateur”) puis éditer le fichier c:\windows\System32\drivers\etc\hosts pour y ajouter 2 entrées pour les 2 hôtes virtuels créés : 192.168.5.22 glpi.acme.com 192.168.5.22 phpMyAdmin.acme.com Penser à sélectionner le filtre “Tous les fichiers (*.*)” pour compter voir apparaître le fichier hosts dans la fenêtre de sélection de fichiers du Bloc-notes. Toutes les lignes du fichier hosts qui débutent par un ‘#’ sont des commentaires. Les 2 lignes à ajouter au fichier doivent donc être retranscrites telles qu’elles apparaissent dans le sujet (c-à-d sans ‘#’ devant). Les 2 sites sont désormais normalement accessibles depuis vote navigateur en tapant les URLS : http://glpi.acme.com http://phpMyAdmin.acme.com Ci-dessous des liens vers des ressources qui traitent de l’installation/configuration d’un serveur web sur OpenSUSE ainsi que du pare-feu présent sur cette même distribution (→ firewalld) . 🕮 Sources : The Apache HTTP Server Masquerading and Firewalls firewalld - Predefined Zones Understanding Firewalld in Multi-Zone Configurations Création de la BDD MySQL Avant d’arriver à un site GLPI opérationnel, il reste 1 étape importante a effectuer : la création d’une base de données. GLPI s’appuie sur une base de données (BDD) pour mémoriser toutes les informations du parc informatique. Comme celle-ci n’existe pas encore sur votre machine virtuelle, vous allez à présent la créer depuis l’interface web proposée par phpMyAdmin après avoir lancé puis configuré le serveur MariaDB pour une utilisation plus sécurisée. 🖮 Travail n° 7 Création de la BDD pour GLPI Démarrer le serveur MariaDB/MySQL et le configurer pour qu’il démarre automatiquement au lancement de la machine : # systemctl start mysql.service # systemctl enable mysql.service Lors de l’installation des packages de MariaDB sur OpenSUSE, la recommandation est faite d’exécuter le script mysql_secure_installation. Ce script va permettre, entre autres, de sécuriser l’accès à MariaDB par un mot de passe. Lancer ce script puis répondre SCRUPULEUSEMENT aux différentes questions comme illustré en jaune ci-dessous : localhost:~ # mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none): Taper Enter OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] Taper Enter Enabled successfully! Reloading privilege tables.. ... Success! You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] Taper Enter New password: Saisir “mysqladmin” Re-enter new password: Saisir “mysqladmin” Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Taper Enter ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] !! IMPORTANT !! répondre ‘n’ ... skipping. By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Taper Enter - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Taper Enter ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! localhost:~ # L’utilisateur root auquel il est fait référence n’est PAS l’administrateur Linux. C’est l’administrateur du serveur de base de données MariaDB. Le fait qu’ils portent le même nom tend à faire penser que ce sont les mêmes mais il n’en est rien : ce sont bien 2 utilisateurs différents. Ceci explique qu’à la 1ière question, on n’a pas à saisir le mot de passe de l’administrateur du serveur de base de données nommé root car celui-ci n’est pas renseigné par défaut (et ne vaut donc certainement pas admin qui est le mot de passe de l’administrateur local Linux). Procéder à la création/configuration de la BDD depuis l’interface de phpMyAdmin sur l’URL http://phpMyAdmin.acme.com Si la sélection du menu Privilèges provoque une erreur dûe à une incompatibilité de “collation”, suivre les indications du screenshot ci-dessous pour la corriger. 🕮 Sources : SQL error when accessing Privileges tab on any database Installation de GLPI Maintenant que les serveurs Apache et MariaDB sont opérationnels, il ne reste plus qu’à lancer l’installation proprement dîte de GLPI pour l’associer notamment à la BDD créée précédemment. Cette installation se fait directement depuis l’interface web de GLPI. 🖮 Travail n° 8 Assistant d’installation de GLPI Se rendre sur l’interface web d’installation de GLPI (→ http://glpi.acme.com) et débuter l’installation en suivant les illustrations suivantes : Si des erreurs sont signalées à l’issue des tests effectués par GLPI au démarrage de l’installation, cela vient sûrement du fait que vous avez oublié d’installer certaines blibliothèques PHP7. Le cas échéant, les installer depuis YaST et surtout ne pas oublier de relancer le serveur Web Apache pour prendre en compte les modifications apportées : # systemctl restart apache2.service Assistance aux utilisateurs Vous allez ici configurer GLPI pour permettre aux utilisateurs d’émettre des tickets d’assistance. 🖮 Travail n° 9 Mise en place d’une nomenclature de lieux, catégories de tickets Se rendre dans le menu “☰ Configuration Intitulés Général Lieux” Créer une arborescence de lieux en cliquant sur le ‘+’ situé à droite de “Lieux”. Vous créerez les lieux suivants : Ateliers Code du bâtiment ← C le reste vide Ateliers > Salle C12 Comme enfant de ← Ateliers Code du bâtiment ← C Code de la pièce ← C12 le reste vide Ateliers > Salle C14 Comme enfant de ← Ateliers Code du bâtiment ← C Code de la pièce ← C14 le reste vide Ateliers > Salle C25 Comme enfant de ← Ateliers Code du bâtiment ← C Code de la pièce ← C25 le reste vide Créer une arborescence de catégories de tickets depuis le menu “☰ Configuration Intitulés Assistance Catégories de tickets” Vous créerez les catégories suivantes : Logiciels Logiciels > Microsoft Project Logiciels > MySQL Workbench Systèmes d’exploitation Systèmes d’exploitation > Windows 7 Systèmes d’exploitation > OpenSUSE Applications réseau Applications réseau > Chamilo Applications réseau > Pronotes Matériel Matériel > Ordinateur Matériel > Imprimante Créer un nouvel utilisateur depuis “☰ Administration Utilisateurs” identifiant : jdoe Nom de famille : Doe Prénom : John Mot de passe : p@ssw0rd Profil : Self-Service Se déconnecter du profil “glpi” puis se reconnecter avec le profil “jdoe” Émettre un ticket d’urgence “Haute” concernant le manque d’encre dans une imprimante de la salle C12. Mettre un screenshot du ticket dans le compte rendu. Se connecter avec le profil “glpi” et s’assurer de la présence du ticket émis dans le menu “☰ Assistance Tickets” Inventaire automatique Vous allez à présent mettre en place la fonctionnalité d’inventaire automatique sous GLPI. Cette fonctionnalité — appelée FusionInventory — s’appuie sur 2 composants : un serveur de communication à installer dans GLPI sous forme d’un plugin un agent d’inventaire à installer sur chaque machine Windows que l’on veut inventorier Lorsque le plugin sera actif dans GLPI et l’agent d’inventaire installé sur Windows, les informations du poste informatique telles que le modèle, ses composants (Mémoire, CPU, disque dur…), les logiciels installés etc… seront automatiquement remontés vers GLPI et donc consultables depuis son interface web. 🖮 Travail n° 10 Installation du plugin FusionInventory Désarchiver l’archive contenant le plugin FusionInventory dans le répertoire adéquat du site GLPI après l’avoir copié depuis Windows sur la machine virtuelle avec pscp.exe : # bunzip2 -c fusioninventory-9.5.0+1.0.tar.bz2 | tar -xvf - -C /srv/www/htdocs/glpi/plugins/ Depuis l’interface web de GLPI (→ ☰ Configuration Plugins), installer puis activer le plugin que l’on vient de désarchiver Vous allez à présent installer l’agent d’inventaire FusionInventory sur le poste Windows qui abrite votre machine virtuelle. L’agent est un service Windows qui sera exécuté périodiquement pour rendre compte à GLPI de l’évolution de la configuration du poste. Ce service dispose d’une interface web basique qui renseigne sur l’état du service mais qui permet aussi de forcer un inventaire. 🖮 Travail n° 11 Installation de l’agent FusionInventory Installer l’agent FusionInventory pour Windows en suivant les instructions ci-dessous : Une procédure plus complète est disponible sur FusionInventory for GLPI installation . Ouvrir l’interface web de l’agent d’inventaire (normalement http://localhost:62354) et forcer un inventaire Attendre quelques instants et rafraîchir l’interface web de GLPI pour avoir accès aux informations du poste Mettre un screenshot de l’inventaire des composants de votre poste dans le compte-rendu. Résolution des problèmes pouvant survenir Le répertoire c:\tmp doit exister sur la machine (nom de répertoire renseigné lors de l’installation de l’agent pour indiquer le lieu où sera stocké le fichier fusioninventory_results) La modification de la configuration de l’agent est possible à partir de la clé HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent de la base de registre. Ne pas oublier de redémarrer le service “FusionInventory Agent” depuis le gestionnaire de services (→ services.msc) Dans le log situé dans C:\Program Files\FusionInventory-Agent\fusioninventory-agent.log, une erreur : [Sun Mar 5 17:56:37 2017][error] [http client] unexpected content, starting with <br /> provient du fait qu’il manque le module php-xml (→ Source : Error PHP version 7.0 during transmission of agent data). Ne pas oublier de relancer le serveur web après installation du paquet php-xml Si une erreur Le cron GLPI ne fonctionne pas s’affiche dans l’interface web au niveau de l’item concernant le plugin FusionInventory, il faut simplement créer une tâche crontab (→ sudo crontab -e) ( → Source : Le cron GLPI ne fonctionne pas, voir documentation, Cron for GLPI and for FusionInventory) : */5 * * * * /usr/bin/php /var/www/glpi/front/cron.php &>/dev/null 🞄 🞄 🞄 Virtualisation d'OpenSUSE 15.2 avec Vmware Player 15 Service TFTP