Gestion Libre de Parc Informatique est un logiciel libre qui permet de gérer un parc de machines liées à l'informatique (ordinateurs, imprimantes, équipements réseau, etc).
Après une période de tests de mise en place d'une solution OCS+GLPI, il nous a fallu effacer les données d'inventaire sans pour autant effacer les données nécessaires à l'utilisation des logiciels. Nous indiquons ici comment nous avons procédé en espérant que cela puisse servir à d'autres.
Même si une réinstallation n'a pas été nécessaire, tout n'a pas fonctionné. Voir les pistes d'amélioration possibles.
Voici l'idée générale de la démarche pour effacer uniquement les données d'inventaire sans toucher aux données nécessaires aux fonctionnement des logiciels:
Avant de procéder à toute intervention, nous avons fait la liste des logiciels utilisés. Dans notre cas il s'agit de :
Avec ces informations, il a été possible de voir dans quelles tables sont créées les données nécessaires au fonctionnement des différents logiciels.
La liste des données initiales a été récupérée en cherchant les commandes INSERT
dans les fichiers d'installation des bases de données. Voici les commandes utilisées et, après quelques manipulations pour supprimer les doublons, les fichiers obtenus.
Pour OCS Inventory: Fichier insert base ocsweb
grep -i INSERT /usr/share/ocsinventory-reports/ocsreports/files/*.sql | cut -f 3 -d " " | sort -u > insert_install_ocsweb
Pour GLPI: Fichier insert base glpi
grep -i INSERT /usr/share/glpi/install/mysql/glpi-0.83.1-empty.sql| cut -f 3 -d " "|sort -u
Pour le plugin GLPI Import OCS:
rgrep -i INSERT /usr/share/glpi/plugins/massocsimport/ | cut -f 2 -d "\"| sort -u
Pour les autres plugins GLPI:
find /usr/share/glpi/plugins/ -name "*.sql" -exec grep INSERT {} \; | cut -f 3 -d " "|sort -u
La liste de toutes les tables est obtenue en se connectant à la base de données mysql et en utilisant la commande
show tables;
et en faisant une petite mise en forme.
Il s'agit d'enlever des listes de toutes les tables, celles où l'on trouve les données initiales. Pour cela, rien de tel qu'une commande grep
pour chaque base.
Pour la base ocsweb: Fichier final des tables à vider.
grep -F -f insert_ocsweb.txt -v tables_ocsweb.txt
Pour la base glpi: Fichier final des tables à vider.
grep -F -f insert_glpi.txt -v tables_glpi.txt
Avant toute modification des données, assurez-vous d'avoir une sauvegarde récente (et une possibilité de pouvoir restaurer vos données rapidement; idéalement, testez la restauration des données sur une machine différente). Pensez aussi à arrêter la remontée des inventaires (activer le verrouillage du script d'import OCS, arrêter les tâches automatiques de type cron et arrêter le serveur web qui réceptionne les données du parc informatique)
La commande permettant d'effacer les données d'une table est TRUNCATE TABLE <nom_de_la_table>. Après transformation, la liste des tables à vider devient une liste de commandes mysql.
Pour la base ocsweb. Pour la base glpi.
Ces commandes sont lancées directement sur les bases avec les commandes suivantes:
mysql -u <utilisateur_ocs> -p ocsweb < truncate_ocsweb.sql.txt
mysql -u <utilisateur_glpi> -p glpi < truncate_glpi.sql.txt
Tout s'est presque passé comme prévu. En effet, après avoir redémarré le serveur web, il est apparu que les plugins GLPI n'étaient plus installés et que les entités ont disparu de GLPI !
Il nous a donc fallu restaurer les données de la table glpi_entities
et réinstaller les plugins GLPI. Cela s'est fait très simplement à partir des sauvegardes et de l'interface GLPI.
Comme la configuration des règles a été conservée, nous sommes en train d'observer les remontées d'inventaires des machines aller directement dans la bonne entité ! \o/
L'autorité de certification préconisée par Demo-TIC est ca-cert. Donc, pour que les agents FusionInventory fassent confiance au certificat du serveur GLPI de Demo-TIC, ils doivent faire confiance à l'autorité de certification. Pour cela, il faut donc:
cacert.org.crt
:wget -O cacert.org.crt "http://www.cacert.org/certs/class3.crt" "http://www.cacert.org/certs/root.crt"
fusioninventory --ca-cert-file=/chemin/vers/le/fichier/cacert.org.crt -f
Il est possible de le faire de manière pérenne en modifiant le paramètre ca-cert-file
dans le fichier de configuration de l'agent. Voir la documentation officielle, notamment la page sur la sécurité et celle sur la configuration de l'agent.