Installation de GLPI sous CentOS 7

GLPI (Gestionnaire Libre de Parc Informatique) est une solution libre de gestion de parc informatique. Il s’agit d’une application Web écrite en PHP où les différents éléments (matériel, logiciels, licences, contrats, interventions, …) constituant votre parc peuvent être organisés et gérés.

Dans cette documentation, nous allons installer la dernière version stable de GLPI (0.90.1) sur une distribution CentOS 7 de manière fonctionnelle. Cette procédure d’installation ne sera donc ni optimisée, ni sécurisée. Nous aurons besoin d’un serveur Web (Apache/HTTPD), d’une base de données de type MySQL (MariaDB remplace MySQL sous CentOS 7) et de PHP.

A noter qu’un paquet glpi est également disponible dans le dépôt EPEL (Extra Packages for Enterprise Linux). Nous n’utiliserons pas ce dépôt.

Ces opérations sont à réaliser en tant qu’utilisateur root.

– Désactivez SELinux de façon permanente à travers son fichier de configuration : vi /etc/selinux/config

SELINUX=disabled

– La prise en compte de ce changement nécessite un redémarrage de la machine : reboot

GLPI requiert l’installation d’extensions PHP (CType, FileInfo, GD, JSON, Mbstring, MySQLi, Session, Zlib). Certaines extensions sont incluses directement dans le paquet php et d’autres doivent être installées explicitement. Dans le cas où vous souhaiteriez mettre en place une méthode d’authentification externe, d’autres extensions PHP seront à prévoir. Dans notre exemple, nous utiliserons une base locale de comptes pour l’authentification.

– Installez les paquets suivants (serveur Apache/HTTPD, PHP, extensions PHP, serveur MariaDB et l’utilitaire wget) : yum install httpd php php-mysql php-gd php-mbstring mariadb-server wget

– Lancez le serveur MariaDB au démarrage de la machine : systemctl enable mariadb
– Lancez le serveur MariaDB : systemctl start mariadb

– Exécutez l’utilitaire mysql_secure_installation pour sécuriser l’installation de MariaDB : mysql_secure_installation

> Enter current password for root (enter for none):
> OK, successfully used password, moving on...
> Set root password? [Y/n] Y
> New password:
> Re-enter new password:
> Remove anonymous users? [Y/n] Y
> Disallow root login remotely? [Y/n] Y
> Remove test database and access to it? [Y/n] Y
> Reload privilege tables now? [Y/n] Y

Pour commencer, l’utilitaire mysql_secure_installation nous demande le mot de passe actuel de l’utilisateur root (celui de MariaDB). Ce mot de passe est vide par défaut. Ensuite, plusieurs questions vous sont posées pour sécuriser l’installation de MariaDB : affecter un mot de passe à l’utilisateur root, supprimer les connexions anonymes, désactiver la possibilité à l’utilisateur root de se connecter à distance, supprimer la base de données prédéfinie test et recharger les privilèges des tables.

GLPI nécessite la création d’une base de données spécifique à son utilisation.

– Lancez l’invite de commandes de MariaDB/MySQL : mysql -u root -p

> Enter password:
> MariaDB [(none)]> CREATE DATABASE glpidb;
> MariaDB [(none)]> GRANT ALL PRIVILEGES ON `glpidb` .* TO 'glpiuser'@'localhost' IDENTIFIED BY 'MotDePasse';
> MariaDB [(none)]> quit

Le mot de passe de l’utilisateur root est demandé. Il s’agit d’entrer le mot de passe que vous avez choisi précédemment. La première commande SQL créé la base de données glpidb. La deuxième commande créé et associe l’utilisateur glpiuser avec cette base de données en lui octroyant les autorisations adéquates. Vous êtes bien entendu encouragé à modifier le mot de passe de l’utilisateur glpiuser.

Nous allons maintenant configurer le serveur Web pour les besoins de GLPI.

– Éditez le fichier de configuration de PHP afin de préciser le fuseau horaire : vi /etc/php.ini

[Date]
date.timezone = "Europe/Paris"

Lors de l’installation de GLPI, le script d’installation vérifie que les répertoires config et files ne soient pas accessibles.

– Créez le fichier de configuration pour interdire l’accès aux répertoires config et files : vi /etc/httpd/conf.d/glpi.conf

<Directory "/var/www/html/glpi/config">
    AllowOverride None
    Require all denied
</Directory>

<Directory "/var/www/html/glpi/files">
    AllowOverride None
    Require all denied
</Directory>

– Lancez le serveur Apache/HTTPD au démarrage de la machine : systemctl enable httpd
– Lancez immédiatement le serveur Apache/HTTPD : systemctl start httpd

CentOS 7  introduit le concept de zone réseau avec le pare-feu firewalld. Ce qui permet d’appliquer des règles en fonction de la zone réseau sur lequel on se trouve. Par défaut, la zone réseau est nommée public. Nous allons autoriser le service http pour la zone public de manière permanente et recharger les règles.

firewall-cmd –permanent –zone=public –add-service=http
firewall-cmd –reload

Nous allons passer à l’installation de GLPI.

– Placez-vous dans le répertoire suivant : cd /usr/local/src/
– Téléchargez la dernière version stable de GLPI (0.90.1 lors de l’écriture cette documentation) à l’aide de l’utilitaire wget : wget https://github.com/glpi-project/glpi/releases/download/0.90.1/glpi-0.90.1.tar.gz
– Décompressez l’archive de GLPI à la racine des documents du serveur Web : tar -xzvf glpi-0.90.1.tar.gz -C /var/www/html/
– Modifiez le propriétaire de manière récursive sur le répertoire de GLPI : chown -R apache:apache /var/www/html/glpi/

A l’aide de votre navigateur Web, vous devez entrer l’adresse du serveur Web suivi de glpi (http://xxx.xxx.xxx.xxx/glpi/). Un assistant vous guide dans l’installation de GLPI.

Sélectionnez la langue française dans la liste déroulante.

glpi_install1

Acceptez la licence d’utilisation.

glpi_install2

Une nouvelle installation complète doit être choisie.

glpi_install3

Plusieurs tests sont effectués pour vérifier si les extensions PHP et la configuration sont conformes aux besoins de GLPI.

glpi_install4

Indiquez les paramètres de connexion à la base de données.

glpi_install5

Sélectionner la base de données existante glpidb.

glpi_install6

Les différentes tables sont alors créées dans cette base de données.

glpi_install7

L’assistant vous indique les comptes utilisateurs prédéfinis.

glpi_install8

– Supprimez le script d’installation de GLPI : rm -f /var/www/html/glpi/install/install.php

Vous pouvez maintenant vous authentifier à l’interface Web de GLPI avec l’utilisateur glpi dont le mot de passe par défaut est aussi glpi.

glpi_install9

Depuis le menu Administration, et le sous-menu Utilisateurs, vous pouvez modifier les mots de passe  attribués aux utilisateurs prédéfinis (glpi, post-only, tech et normal).

Installation de mod_perl à partir des sources pour Apache/HTTPD 2.4.x

La sortie de la version 2.0.9 de mod_perl au mois de juin 2015, a apporté le support de la branche 2.4.x de Apache/HTTPD.

Dans cette documentation, nous allons installer mod_perl à partir des sources de manière dynamique. Cette installation a été réalisée sous une distribution CentOS 7.

– Installez un client HTTP en ligne de commande : yum install wget
– Installez un compilateur C et l’utilitaire make : yum install gcc make

– Installez les bibliothèques de développement de Apache/HTTPD : yum install httpd-devel
– Installez PERL et les dépendances nécessaires à mod_perl : yum install perl perl-ExtUtils-Embed gdbm-devel perl-Data-Dumper

– Placez-vous dans le répertoire suivant : cd /usr/local/src/
– Téléchargez les sources de mod_perl 2.0.9 (ou version supérieure si disponible) avec la commande wget : wget http://apache.mirrors.ovh.net/ftp.apache.org/dist/perl/mod_perl-2.0.9.tar.gz
– Décompressez l’archive : tar -xzvf mod_perl_2.0.9.tar.gz
– Placez-vous dans le répertoire suivant : cd mod_perl-2.0.9
– Spécifiez l’emplacement de l’utilitaire de compilation apxs pour la compilation du module dynamique mod_perl : perl Makefile.PL MP_APXS=/usr/bin/apxs
– Compilez mod_perl : make
– Installez mod_perl : make install

Le module dynamique mod_perl.so est installé dans le répertoire /usr/lib64/httpd/modules/.

– Créez un fichier de configuration pour charger le module dynamique mod_perl dans Apache/HTTPD : vi /etc/httpd/conf.modules.d/02-perl.conf

LoadModule perl_module modules/mod_perl.so

– Redémarrez le service Apache/HTTPD : systemctl restart httpd
– Vérifiez l’état du service Apache/HTTPD : systemctl status httpd
– Vérifiez la présence du module dynamique mod_perl dans Apache/HTTPD : httpd -M

perl_module (shared)

Supervision d’un onduleur avec Nagios

Le plugin check_snmp_ups permet de superviser l’état d’un onduleur (la source, la température, le niveau et la charge des batteries, la puissance consommée).

Ce plugins Nagios est écrit en Bash et est distribué sous licence GPLv2. Il nécessite en pré-requis, l’installation des utilitaires SNMP (snmpget et snmpwalk) sur votre serveur Nagios : yum install snmp-utils.

check_snmp_ups_1

– Déplacez le plugin check_snmp_ups dans le répertoire contenant les plugins Nagios : mv check_snmp_ups /usr/local/nagios/libexec/
– Rendez le fichier exécutable : chmod +x /usr/local/nagios/libexec/check_snmp_ups
– Modifiez le propriétaire pour ce script : chown nagios:nagios /usr/local/nagios/libexec/check_snmp_ups

Pour vérifier que ce plugin Nagios fonctionne correctement, il vous suffit de l’exécuter : /usr/local/nagios/libexec/check_snmp_ups -H xxx.xxx.xxx.xxx -C public -t battery

L’argument H correspond à l’adresse IP de l’onduleur, C à la communauté SNMP et t au type d’information que vous souhaitez récupérer.  Les valeurs possibles sont : battery, charge, power, source et temperature. En fonction du type d’information, il vous faudra utiliser d’autres arguments tels que w et c pour indiquer les seuils d’alerte. Vous trouverez plus d’informations sur son utilisation en affichant l’aide qui accompagne ce plugin : /usr/local/nagios/libexec/check_snmp_ups -h

Voici quelques exemples d’utilisation :

– Vérifiez l’état des batteries de l’onduleur : ./check_snmp_ups -H xxx.xxx.xxx.xxx -C public -t battery

Battery status : Battery level is ok

– Vérifiez la charge des batteries de l’onduleur : ./check_snmp_ups -H xxx.xxx.xxx.xxx -C public -t charge -w 70 -c 30

Battery level : 100%. Remaining time : 122 minutes | charge=100;70;30;0

– Vérifiez la puissance consommée par l’onduleur : ./check_snmp_ups -H xxx.xxx.xxx.xxx -C public -t power -w 0 -c 0

Output load : 9.62 KWatt | output_power=9622;0;0;0

– Vérifiez la source de l’onduleur : ./check_snmp_ups -H xxx.xxx.xxx.xxx -C public -t source

Output source : Output is filtered

– Vérifiez la température de l’onduleur : ./check_snmp_ups -H xxx.xxx.xxx.xxx -C public -t temperature -w 0 -c 0

Temperature : 22 Degree Celsius | temperature=22;0;0;0

Nous allons maintenant modifier la configuration de Nagios pour superviser un onduleur. Cette partie dépend de l’arborescence de configuration et de l’installation de Nagios dont vous disposez.

– Ajoutez les définitions des objets command : vi /etc/nagios/objects/commands.cfg

define command {
command_name check_ups_battery
command_line $USER2$/check_snmp_ups -H $HOSTADDRESS$ -C $ARG1$ -t battery
}

define command {
command_name check_ups_charge
command_line $USER2$/check_snmp_ups -H $HOSTADDRESS$ -C $ARG1$ -t charge -w $ARG2$ -c $ARG3$
}

define command {
command_name check_ups_power
command_line $USER2$/check_snmp_ups -H $HOSTADDRESS$ -C $ARG1$ -t power -w $ARG2$ -c $ARG3$
}

define command {
command_name check_ups_source
command_line $USER2$/check_snmp_ups -H $HOSTADDRESS$ -C $ARG1$ -t source
}

define command {
command_name check_ups_temperature
command_line $USER2$/check_snmp_ups -H $HOSTADDRESS$ -C $ARG1$ -t temperature -w $ARG2$ -c $ARG3$
}

– Ajoutez la définition de l’objet host pour l’onduleur : vi /etc/nagios/objects/hosts.cfg

define host {
host_name ups
use generic-host
alias Onduleur
address xxx.xxx.xxx.xxx
contact_groups +admin
}

– Ajoutez la définition des objets service pour l’onduleur : vi /etc/nagios/objects/services.cfg

define service {
host_name ups
use generic-service
service_description Batterie
check_command check_ups_battery!public
contact_groups +admin
}

define service {
host_name ups
use generic-service
service_description Charge
check_command check_ups_charge!public!70!30
contact_groups +admin
}

define service {
host_name ups
use generic-service
service_description Puissance
check_command check_ups_power!public!0!0
contact_groups +admin
}

define service {
host_name ups
use generic-service
service_description Source
check_command check_ups_source!public
contact_groups +admin
}

– Rechargez la configuration de Nagios : service nagios reload ou systemctl reload nagios

L’onduleur est maintenant supervisé à l’aide de Nagios.

check_snmp_ups_2

check_snmp_ups_3