Installer et déployer OCSInventory-NG

closeCet article a été publié il y a 15 ans 9 mois 19 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

OCSInventory-NG est un outil d’inventaire de parc informatique. On l’associe souvent à GLPI (Gestion Libre de Parc Info), mais c’est uniquement car GLPI sait aller chercher les infos de OCS. OCSInventory-NG suffit à lui seul – lorsqu’il s’agit d’inventaire.
L’objectif de cet outil est de remonter automatiquement toutes les informations des ordinateurs (PC Windows, Linux, Mac) connectés à votre réseau ; notamment la liste des logiciels installés.
Pour ceux qui ne sont pas connectés au réseau, il est possible de faire tourner localement l’agent (l’outil qui remonte les infos) puis de récupérer un fichier et l’incorporer. Ce n’est pas très dynamique mais parfois nécessaire.

Dans cet article, je vais montrer comment installer le serveur sous Debian, le paramétrer un minimum et enfin comment déployer l’agent (il existe plusieurs méthodes et la doc n’est pas forcément limpide – pardon aux auteurs, j’ai dû relire plusieurs fois et m’y reprendre à plusieurs fois).
Mon contexte d’utilisation de l’agent est essentiellement du poste Windows où tout le monde n’a pas nécessairement le droit d’admin. Enfin, j’ai un domaine Samba, pratique pour exécuter des choses au login. Si c’est votre cas ou si vous avez un domaine AD de Bigrosoft, ça facilitera le déploiement.

Je ne vous expliquerai pas tout non plus, pour ne pas plagier la doc officielle. Je vous donne des pistes pour aller le plus vite possible en comprenant au mieux les grands principes.

Installation sous Debian

En considérant que vous avez déjà une base MySQL en état de marche et que vous souhaitez installer OCSInventory-NG sur la même machine, ça se résume à un classique :

aptitude install ocsinventory-reports ocsinventory-server

Un 3è paquet appelé ocsinventory-agent est l’agent pour Linux. Probablement inutile sur votre serveur. Le paquet ocsinventory-reports est l’outil de reporting web. A priori pas à dissocier de l’installation sauf si la base de données est sur un autre serveur.
Pensez à survoler les pré-requis d’installation tout de même. Il fallait à priori que j’installe le paquet libphp-pclzip, ce que j’ai fait sans trop y croire (il ne figurait pas dans les dépendances Debian il me semble).

La configuration du paquet vous demande si vous voulez gérer à la main le côté base de données ou laisser l’outil Debian de conf automatique de base de données :
Conf auto de la base de données ?
Si vous le faites à la main, la documentation (fichier /usr/share/doc/ocsinventory-server/README.Debian
) explique qu’il faut forcer le nom de votre schéma de base de données à ocsweb car le nom est actuellement hardcodé un peu partout.

J’ai opté pour le mode automatique. Ca vous demande le compte root pour créer le schéma ocsweb et un utilisateur admin associé (appelé « ocs »). A la fin ça donne ça :

Setting up ocsinventory-server (1.01-4) ...
dbconfig-common: writing config to /etc/dbconfig-common/ocsinventory-server.conf

Creating config file /etc/dbconfig-common/ocsinventory-server.conf with new version

Creating config file /etc/ocsinventory/ocsinventory.conf with new version
granting access to database ocsweb for ocs@localhost: success.
verifying access for ocs@localhost: success.
creating database ocsweb: success.
verifying database ocsweb exists: success.
dbconfig-common: flushing administrative password
Reloading web server config...6692

Configuration par le web

Comme toute application LAMP qui se respecte, la suite se passe par une interface web de configuration. Celle-ci est de base inaccessible dans le packaging Debian. Il faut donc aller créer un mot de passe dans un fichier htpasswd. Le fichier est là : /etc/ocsinventory/htpasswd.setup et pour créer un contenu intéressant, il convient de l’effacer et de le créer comme vous voulez :

cd /etc/ocsinventory
rm htpasswd.setup
htpasswd -c htpasswd.setup admin
chown root:www-data htpasswd.setup
chmod 640 htpasswd.setup

Attention aux permissions :

-rw-r----- 1 root www-data   20 2008-05-21 11:14 htpasswd.setup

Enfin on lance l’installation via l’adresse http://votre_serveur/ocsreports/install.php
Vous vous identifierez donc 2 fois : une fois pour passer le stade du HTAccess d’Apache (le compte admin avec password qui va bien dans /etc/ocsinventory/htpasswd.setup) puis le compte admin de la base de données (login ocs et password choisi à l’installation).
Faites défiler les écrans, il n’y en a pas beaucoup et ce n’est pas bien méchant. Lisez tout. Il peut y avoir quelques « warnings » :

WARNING: You will not be able to build any auto deployment package with size greater than 8m.
You must raise both post_max_size and upload_max_filesize in your php.ini to correct this.

WARNING: The user you typed does not seem to be root
If you encounter any problem with files insertion, try setting the global max_allowed_packet mysql value to at least 2M in your server config file.

WARNING: files/ocsagent.exe missing, if you do not reinstall the DEPLOY feature won't be available

Rien d’inquiétant. A garder à l’esprit tout de même pour plus tard.

L’interface de reporting

Enfin, vous vous connectez à l’interface de reporting avec le login/pass standard et vous changez le mot de passe tout de suite !!! http://votre_serveur_de_reporting/ocsreports/, login admin, password admin.

Deux paramètres cruciaux

Il y a un détail de configuration qui est un peu long à comprendre (ou alors je suis lent), c’est le rythme auquel les PC vont faire des remontées. Que vous installiez l’agent en mode « service Windows » ou non, la problématique est la même : ne pas forcer un inventaire toutes les 5 minutes ni nécessairement à chaque login sur un poste. Il s’agit des paramètres PROLOG_FREQ et FREQUENCY que vous trouverez sans mal dans le menu de paramétrage qui va bien de l’interface ocsreports.
– FREQUENCY définit en nombre d’heure la période max entre 2 inventaires pour un agent donné. « période max » car pour éviter les surcharges si tout le monde remontait son inventaire en même temps ; l’agent choisit donc un timing aléatoirement entre « tout de suite » et cette période max.
Cette période précise donc à l’agent l’intervalle de temps avant d’aller demander au serveur quoi faire – pas nécessairement remonter l’inventaire.
– PROLOG_FREQ définit la fréquence de remontée d’inventaire cette fois-ci. C’est différent du paramètre précédent qui indiquait tous les combiens de temps on se pose la question. En bon français de base.
Exemples :
PROLOG_FREQ = always & FREQUENCY = 6 => toutes les 6 heures au max, je force une rémontée (qui sera faite à chaque fois)
PROLOG_FREQ = 2 & FREQUENCY = 6 => toutes les 6 heures au max, je pose la question au serveur, celui-ci demandera un inventaire si l’inventaire actuel a plus de 2 jours pour ce PC. Ca peut être utile pour des postes qui se déconnectent souvent du réseau : ainsi, toutes les 6 heures, on vérifiera si ce n’est pas le moment de se secouer.
Pigé ? non, ben testez alors. Notez qu’en mode « service Windows », l’agent stocke son compteur de temps dans un fichier de conf du répertoire à il est installé. Ca peut aider pour comprendre vos tests.

Déploiement

Le but est de savoir comment vous allez faire pour faire exécuter à distance, sur les PC de votre parc, l’outil de reporting (ocsagent.exe) sans avoir à lever les fesses de votre chaise et passer sur tous les PC un par un et sans craindre qu’un gros malin court-circuite le processus à son lancement (histoire que vous ne voyiez pas ses jeux de poker, logiciels de peer-to-peer et EXE de lancement de groslolo.xxx – c’est du vécu sauf groslolo).
Il existe plusieurs méthodes, toutes décrites sur le wiki officiel
Mon retour d’expérience est le suivant : la fabrication d’un package installable à distance, sans droit d’admin, installant un service Windows, n’a pas fonctionné. Malgré plusieurs tentatives et de l’aide demandée sur le forum. La doc du packager est là.

J’ai donc opté pour une méthode ne nécessitant pas la présence d’un service Windows. Pour la simple raison qu’un gros malin ayant les droits nécessaires pourra aller désactiver l’agent. La méthode par service Windows est pourtant celle recommandée par les auteurs. Mouais.
C’est donc la méthode où l’utilisateur téléchargera malgré lui l’agent à chaque logon au domaine et ira remonter un inventaire (PROLOG_FREQ = ALWAYS, voir plus haut). Attention l’agent fait 1,5 Mo en gros. Pas négligeable si le parc est énorme.
Pour ce faire, vous forcez un appel au script ocslogon.exe depuis votre script de connexion Samba situé dans /etc/samba/scripts.
Quelques remarques :
– Le plus simple est de renommer votre script en adresse_ip_du_serveur.exe (exemple 10.0.0.1.exe), ainsi, l’agent saura à aller chercher le serveur pour remonter ses données. Il passe par un répertoire particulier du serveur web (/ocsinventory). J’oubliais : il faut du HTTPS sur le serveur, me semble-t-il.
– Votre .BAT de logon au domaine ira chercher l’agent sur un répertoire partagé public déjà « monté » et vous l’appellerez avec les paramètres suivants : X:\blabla\10.0.0.1.exe /NP où NP signifie « No Proxy », ça évite qu’il aille voir la conf proxy de IE et fasse potentiellement n’importe quoi pour taper en interne. Pigé ?

N’hésitez pas à lire dans la doc officielle tout ce qui concerne le renommage de ocslogon.exe en adresse_ip.exe ou nom_serveur.exe.

Voilà, vous devriez très vite voir se peupler la base de données et avec lui l’outil de reporting.

Détail : j’ai pété le nombre de connx à Mysql

Mine de rien, le nombre de connexion simultanées à votre MySQL va en prendre pour son grade. Si vous avez une limitation assez basse, vous allez bientôt avoir des soucis de connexion à la base. Un petit

SHOW PROCESSLIST

dans MySQL vous montrera le nombre de connx actives.
Et le paramètre set-variable=max_connections=255 (ou plus) dans la section [mysqld] de votre fichier /etc/mysql/my.cnf + redémarrage de la base vous fera le plus grand bien.

Voilà, fliquez bien – en 2/3 minutes, vous devriez pouvoir faire des requêtes assez sympa dans la base, en tapant sur les tables SOFTWARES et HARDWARE : compter le nombre d’occurrence de tel logiciel, remonter tous les logiciels de l’éditeur trucmuche etc.

7 comments

  1. Une remarque qui devrait figurer en tête de cet article :
    OCS Inventory n’est dispo sur Debian qu’à partir de Lenny (actuelle « testing »). Il vous faut peut-être mettre à jour vos listes de sources dans /etc/apt/sources.list

  2. Bonjour,

    Merci pour les infos de ton blog.

    J’ai essayé de faire ce que tu y écris, mais il ne se passe rien, en fait, le fichier OcsAgentSetup ne semble rien faire. Est ce normal ou ai je oublié quelque chose ?

    D’avance merci.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.