OCS Inventory-ng: Une solution d'inventaire

Présentation Rapide

Pourquoi?

Lorsqu'un réseaui commence à disposer de nombreuses machines, il devient rapidement difficile de connaître les ressources dont le réseau dispose ainsi que leur état.. Cela pose nombre de problèmes lorsqu'on souhaite remplacer un périphérique ou effectuer une mise à niveau.

Dans le cas des logicielsii, c'est encore plus complexe. En effet, il faut tenir le compte des licences logicielles utilisés sur le réseau et de vérifier si une mise à jour à été effectuée sur toutes les machines pour maintenir un environnement logiciel homogène dans le temps.

C'est dans cet objectif qu'ont été crées les logiciels d'inventaire de parc, il en existe plusieurs, propriétairesiii ou libresiv. Ici, nous étudierons OCS inventory-ng qui appartient à la seconde catégorie.

Qu'est-ce que c'est?

Un logiciel de gestion de parc est généralement capable de rechercher sur un réseau les matériels via l'utilisation de logiciels « sentinelles » interrogeant le réseau pour connaître ce qui le compose et d'agents déployés sur les différents ordinateurs du réseau pour qu'ils fournissent plus d'informations que la simple réponse aux requêtes ICMP, en fournissant un inventaire matériel et logiciel en relation directe avec le système d'exploitation.

Généralement, ce type de logiciels est couplé à un système de déploiement de logiciels afin, non plus de contrôler, mais d'assurer l'uniformité des environnements logiciels présents sur le réseau. D'un point central, l'opérateur prépare des paquets de logiciels à déployer, et dès lors, ils sont envoyés vers les ordinateurs du réseau.

Qui l'utilise?

Selon le site officiel du projet qui recense des témoignages, de nombreuses administrations publiques ainsi que des entreprises partout dans le monde, on retrouve par exemple:

Ce type de logiciels est potentiellement utilisable par toute entité possédant un vaste parc de machines, même s'ils sont souvent trop peu connus.

L'architecture

Cette section présente l'imbrication des différentes fonctionnalités entre elles, les éléments individuels seront développés plus en détails dans leurs sections respectives. L'organisation du logiciel présentée ici permettra de mieux s'approprier les concepts présenter plus tard ainsi que d'aborder des possibilités qui n'ont pas pu être présentées par manque de moyens physiques.

On retrouve une architecture similaire chez la plupart des solutions concurrentes, due en particulier à des besoins d'analyse du système à inventorier plus complexes que ne le permettent un client ( léger, riche ou lourd ).Il s'agit ici de services conçus pour s'exécuter en arrière plan sur les machines à inventorier et donc, une telle utilisation n'est pas compatible avec une architecture de types clients légers ou riches.

Il est possible de séparer les différentes composantes du serveur sur différentes machines afin d'équilibrer la charge. Cette partie n'est pas traitée, du fait que je ne dispose pas d'un parc de test ou de moyens d'en simuler un assez conséquents pour justifier ce type d'architecture. Un autre avantage de la modularité de l'architecture d'OCS inventory NG est qu'il est possible d'utiliser un serveur SQL déjà présent au sein de l'entreprise.

Mise en place

Serveur

Tout d'abord, il faut utiliser disposer d'un ordinateur qui fera office de serveur. Sur ce dernier, il faudra bénéficier d'un serveur apache, d'un serveur MySQL ainsi que divers modules apache et librairies perl.

Pour une installation sous Ubuntu, on installera les librairies suivantes:

#apt-get install mysql-server apache2 php5 php5-ldap php5-imap php5-gd php5-mysql 
#apt-get install libapache2-mod-php5 libapache2-mod-perl2 
#apt-get install libxml-simple-perl libcompress-zlib-perl 
#apt-get install libdbi-perl libdbd-mysql-perl 
#apt-get install libnet-ip-perl libphp-pclzip make 
#apt-get install libapache-dbi-perl 
#apt-get install libsoap-lite-perl

Une fois tous ces modules installés, il ne reste plus qu'à récupérer les sources du logiciel sur le site officiel (http://www.ocsinventory-ng.org/index.php?page=1-01). Ici, nous utiliserons la version 1.01 car en général, les grandes entreprises préfèrent utiliser les versions dites stables.

#tar -xvzf OCSNG_LINUX_SERVER_1.01.tar.gz 
#cd OCSNG_LINUX_SERVER_1.01 
#./setup.sh 
+----------------------------------------------------------+ 
|                                                          | 
| Welcome to OCS Inventory NG Management server setup !    | 
|                                                          | 
+----------------------------------------------------------+ 

CAUTION: If upgrading Communication server from OCS Inventory NG 1.0 RC2 and 
previous, please remove any Apache configuration for Communication Server! 

Do you wish to continue ([y]/n)? y
Assuming Communication server 1.0 RC2 or previous is not installed 
on this computer. 

Starting OCS Inventory NG Management server setup from folder /home/netadmin/Bureau/OCSNG_LINUX_SERVER_1.01 
Storing log in file /home/netadmin/Bureau/OCSNG_LINUX_SERVER_1.01/ocs_server_setup.log 

+----------------------------------------------------------+ 
| Checking for database server properties...               | 
+----------------------------------------------------------+ 

Your MySQL client seems to be part of MySQL version 5.0. 
Your computer seems to be running MySQL 4.1 or higher, good ;-) 

Which host is running database server [localhost] ? localhost 
OK, database server is running on host localhost ;-) 

On which port is running database server [3306] ? 3306
OK, database server is running on port 3306 ;-) 


+----------------------------------------------------------+ 
| Checking for Apache web server daemon...                 | 
+----------------------------------------------------------+ 
 
Where is Apache daemon binary [/usr/sbin/apache2] ? /usr/sbin/apache2
OK, using Apache daemon /usr/sbin/apache2 ;-) 


+----------------------------------------------------------+ 
| Checking for Apache main configuration file...           | 
+----------------------------------------------------------+ 

Where is Apache main configuration file [//etc/apache2/apache2.conf] ? /etc/apache2/apache2.conf
OK, using Apache main configuration file //etc/apache2/apache2.conf ;-) 


+----------------------------------------------------------+ 
| Checking for Apache user account...                      | 
+----------------------------------------------------------+ 

Which user account is running Apache web server [${APACHE_RUN_USER}] ?www-data 
OK, Apache is running under user account www-data ;-) 


+----------------------------------------------------------+ 
| Checking for Apache group...                             | 
+----------------------------------------------------------+ 

Which user group is running Apache web server [${APACHE_RUN_GROUP}] ?www-data 
OK, Apache is running under users group www-data ;-) 


+----------------------------------------------------------+ 
| Checking for PERL Interpreter...                         | 
+----------------------------------------------------------+ 

Found PERL Intrepreter at </usr/bin/perl> ;-) 
Where is PERL Intrepreter binary [/usr/bin/perl] ? /usr/bin/perl
OK, using PERL Intrepreter /usr/bin/perl ;-) 


Do you wish to setup Communication server on this computer ([y]/n)? y


+----------------------------------------------------------+ 
| Checking for Make utility...                             | 
+----------------------------------------------------------+ 

OK, Make utility found at </usr/bin/make> ;-) 


+----------------------------------------------------------+ 
| Checking for Apache Include configuration directory...   | 
+----------------------------------------------------------+ 

Setup has found Apache Include configuration directory in 
//etc/apache2/conf.d/. 
If you are not using Include directive, please enter 'no'. 
Where is Apache Include configuration directory [//etc/apache2/conf.d/] ? /etc/apache2/conf.d/
OK, Apache Include configuration directory //etc/apache2/conf.d/ found ;-) 

+----------------------------------------------------------+ 
| Checking for Apache mod_perl version...                  | 
+----------------------------------------------------------+ 

Checking for Apache mod_perl version 1.99_22 or higher 
Found that mod_perl version 1.99_22 or higher is available. 
OK, Apache is using mod_perl version 1.99_22 or higher ;-) 

+----------------------------------------------------------+ 
| Checking for Communication server log directory...       | 
+----------------------------------------------------------+ 

Communication server can create detailled logs. This logs can be enabled 
by setting interger value of LOGLEVEL to 1 in Administration console 
menu Configuration. 
Where to put Communication server log directory [/var/log/ocsinventory-NG] ? /var/log/ocsinventory-NG
OK, Communication server will put logs into directory /var/log/ocsinventory-NG ;-) 


+----------------------------------------------------------+ 
| Checking for required Perl Modules...                    | 
+----------------------------------------------------------+ 

Checking for DBI PERL module... 
Found that PERL module DBI is available. 
Checking for Apache::DBI PERL module... 
Found that PERL module Apache::DBI is available. 
Checking for DBD::mysql PERL module... 
Found that PERL module DBD::mysql is available. 
Checking for Compress::Zlib PERL module... 
Found that PERL module Compress::Zlib is available. 
Checking for XML::Simple PERL module... 
Found that PERL module XML::Simple is available. 
Checking for Net::IP PERL module... 
Found that PERL module Net::IP is available. 
Checking for SOAP::Lite PERL module... 
Found that PERL module SOAP::Lite is available. 


+----------------------------------------------------------+ 
| OK, looks good ;-)                                       | 
|                                                          | 
| Configuring Communication server Perl modules...         | 
+----------------------------------------------------------+ 

Checking if your kit is complete... 
Looks good 
Writing Makefile for Apache::Ocsinventory 

+----------------------------------------------------------+ 
| OK, looks good ;-)                                       | 
|                                                          | 
| Preparing Communication server Perl modules...           | 
+----------------------------------------------------------+ 


+----------------------------------------------------------+ 
| OK, prepare finshed ;-)                                  | 
|                                                          | 
| Installing Communication server Perl modules...          | 
+----------------------------------------------------------+ 

 
+----------------------------------------------------------+ 
| OK, Communication server Perl modules install finished;-)| 
|                                                          | 
| Creating Communication server log directory...           | 
+----------------------------------------------------------+ 

Creating Communication server log directory /var/log/ocsinventory-NG. 

Fixing Communication server log directory files permissions. 
Configuring logrotate for Communication server. 
Writing communication server logrotate to file /etc/logrotate.d/ocsinventory-NG 


+----------------------------------------------------------+ 
| OK, Communication server log directory created ;-)       | 
|                                                          | 
| Now configuring Apache web server...                     | 
+----------------------------------------------------------+ 

Writing communication server configuration to file //etc/apache2/conf.d//ocsinventory.conf 

+----------------------------------------------------------+ 
| OK, Communication server setup sucessfully finished ;-)  | 
|                                                          | 
| Please, review //etc/apache2/conf.d//ocsinventory.conf 
| to ensure all is good. Then restart Apache daemon.       | 
+----------------------------------------------------------+ 


Do you wish to setup Administration server (web administration console) 
on this computer ([y]/n)? y

+----------------------------------------------------------+ 
| Checking for Apache root document directory...           | 
+----------------------------------------------------------+ 

Where is Apache root document directory [] ?/var/www 
OK, Apache root document directory is /var/www ;-) 


+----------------------------------------------------------+ 
| Checking for required Perl Modules...                    | 
+----------------------------------------------------------+ 

Checking for DBI PERL module... 
Found that PERL module DBI is available. 
Checking for DBD::mysql PERL module... 
Found that PERL module DBD::mysql is available. 
Checking for XML::Simple PERL module... 
Found that PERL module XML::Simple is available. 
Checking for Net::IP PERL module... 
Found that PERL module Net::IP is available. 

+----------------------------------------------------------+ 
| Installing files for Administration server...            | 
+----------------------------------------------------------+ 

Creating directory /var/www/download. 

Creating directory /var/www/ocsreports. 
 
Copying files to /var/www/ocsreports. 

Fixing directories and files permissions. 

Configuring IPDISCOVER-UTIL Perl script. 

Installing IPDISCOVER-UTIL Perl script. 

Fixing permissions on IPDISCOVER-UTIL Perl script. 

+----------------------------------------------------------+ 
| OK, Administration server installation finished ;-)      | 
|                                                          | 
| Point your browser to http://server/ocsreports to        | 
| configure database server and create/update schema.      | 
+----------------------------------------------------------+ 


Setup has created a log file /home/netadmin/Bureau/OCSNG_LINUX_SERVER_1.01/ocs_server_setup.log. Please, save this file. 
If you encounter error while running OCS Inventory NG Management server, 
we can ask you to show us his content ! 

DON'T FORGET TO RESTART APACHE DAEMON ! 

Enjoy OCS Inventory NG ;-) 

#/etc/init.d/apache2 restart

A la fin de la procédure d'installation, il est nécessaire de redémarrer le serveur web afin que les changements soient pris en compte. Il reste alors une petite étape de configuration.

Le site d'administration n'est pas encore totalement prêt. Il faut encore entrer les informations de connexion à la base mysql.

Une fois ces informations entrées, il ne reste plus qu'à valider.

Il n'est pas nécessaire de fournir une information dans la dernière boite puisqu'en général, le processus de mise à jour des informations doit se faire sans troubler le travail en cours sur la machine.

Le travail de configuration est terminé, il faut maintenant installer les agents.

Agents

Pour cet essai, nous utiliserons deux agents, l'agent Windows et l'agent Linux sous Ubuntu.

Linux

Sous Linux, nous allons utiliser l'agent fourni par le site officiel, encore une fois, il faudra installer les librairies nécessaires à l'utilisation de l'agent. Sous Ubuntu, les lignes à entrer sont les suivantes:

apt-get install libxml-simple-perl 
apt-get install libcompress-zlib-perl 
apt-get install libnet-ip-perl 
apt-get install libwww-perl 
apt-get install libdigest-md5-perl 
apt-get install libnet-ssleay-perl

Une fois tous ces modules installés, il ne reste plus qu'à récupérer les sources du logiciel sur le site officiel (http://www.ocsinventory-ng.org/index.php?page=1-01). Ici, nous utiliserons la même version (1.01) que pour le serveur.

#tar -xf OCSNG_LINUX_AGENT_1.01_with_require.tar.gz 
#cd OCSNG_LINUX_AGENT_1.01 
# ./setup.sh

+----------------------------------------------------------+ 
|                                                          | 
| Welcome to OCS Inventory NG Agent setup !                | 
|                                                          | 
+----------------------------------------------------------+ 
Writing log to file /home/netadmin/Bureau/OCSNG_LINUX_AGENT_1.01/ocs_agent_setup.log 


+----------------------------------------------------------+ 
| Checking for previous installation...                    | 
+----------------------------------------------------------+ 

Previous installation of OCS Inventory NG agent not found 

+----------------------------------------------------------+ 
| Checking for supplied parameters...                      | 
+----------------------------------------------------------+ 

No parameter found 
OCS Inventory NG Agent setup running in user interactive mode 


+----------------------------------------------------------+ 
| Checking for OCS Inventory NG Agent running method...    | 
+----------------------------------------------------------+ 

OCS Inventory NG Agent can be run through 2 methods: 
- local: inventory will be generated locally to a file, without 
         interacting with Communication Server. Inventory results 
         must then be imported manually into the server through 
         Administration Console. 
- http: Agent can connect to Communication Server and will interact 
        with it to know what is has to do (inventory, ipdiscover, 
        deployment...) 
Which method will you use to generate the inventory ([http]/local) ?http 
OK, OCS Inventory NG agent will be running in <http> mode ;-) 


+----------------------------------------------------------+ 
| Checking for OCS Inventory NG Communication Server...    | 
+----------------------------------------------------------+ 

Which host is running OCS Inventory NG Communication Server [] ?localhost 
On which port is running OCS Inventory NG Communication Server [80] ? 80
OK, OCS Inventory NG Communication Server is running on host 
<localhost> and port <80> ;-) 
 

+----------------------------------------------------------+ 
| Checking for TAG administrative information value...     | 
+----------------------------------------------------------+ 

What is the value of TAG ([]) ? 
OK, OCS Inventory NG agent will use <> as <TAG> ;-) 


+----------------------------------------------------------+ 
| Checking for PERL Interpreter...                         | 
+----------------------------------------------------------+ 

OK, PERL Intrepreter found at </usr/bin/perl> ;-) 


+----------------------------------------------------------+ 
| Checking for C/C++ Compiler...                           | 
+----------------------------------------------------------+ 

OK, C/C++ Compiler found at </usr/bin/cc> ;-) 


+----------------------------------------------------------+ 
| Checking for Make utility...                             | 
+----------------------------------------------------------+ 

OK, Make utility found at </usr/bin/make> ;-) 


+----------------------------------------------------------+ 
| Checking for dmidecode binaries...                       | 
+----------------------------------------------------------+ 

Found dmidecode binaries version <2.9> at </usr/sbin/dmidecode> ;-) 


+----------------------------------------------------------+ 
| Checking for Compress::Zlib PERL module...               | 
+----------------------------------------------------------+ 

OK, PERL module Compress::Zlib is available ;-) 


+----------------------------------------------------------+ 
| Checking for XML::Simple PERL module...                  | 
+----------------------------------------------------------+ 

OK, PERL module XML::Simple is available ;-) 


+----------------------------------------------------------+ 
| Checking for Net::IP PERL module...                      | 
+----------------------------------------------------------+ 

OK, PERL module Net::IP is available ;-) 


+----------------------------------------------------------+ 
| Checking for LWP::UserAgent PERL module...               | 
+----------------------------------------------------------+ 
 
OK, PERL module LWP::UserAgent is available ;-) 


+----------------------------------------------------------+ 
| Checking for Digest::MD5 PERL module...                  | 
+----------------------------------------------------------+ 

OK, PERL module Digest::MD5 is available ;-) 


+----------------------------------------------------------+ 
| Checking for Net::SSLeay PERL module...                  | 
+----------------------------------------------------------+ 

OK, PERL module Net::SSLeay is available ;-) 


+----------------------------------------------------------+ 
| Installing IPDISCOVER binary...                          | 
+----------------------------------------------------------+ 

Building IPDISCOVER version 3 
Installing IPDISCOVER version 3 into /usr/sbin 
OK, IPDISCOVER version 3 setup successfully ;-) 


+----------------------------------------------------------+ 
| Installing OCS Inventory NG Agent...                     | 
+----------------------------------------------------------+ 

Configuring OCS Inventory NG Agent 
Building OCS Inventory NG Agent 
Installing OCS Inventory NG Agent 
Creating </bin/ocsinv> OCS Inventory NG Agent symbolic link 
OK, OCS Inventory NG Agent setup successfully ;-) 


+----------------------------------------------------------+ 
| Creating OCS Inventory NG Agent log directory...         | 
+----------------------------------------------------------+ 

Creating OCS Inventory NG Agent log directory </var/log/ocsinventory-client>. 
Configuring logrotate for OCS Inventory NG Agent. 
Writing OCS Inventory NG Agent logrotate to file </etc/logrotate.d/ocsinventory-client> 


+----------------------------------------------------------+ 
| Installing OCS Inventory NG Agent configuration files... | 
+----------------------------------------------------------+ 

Creating OCS Inventory NG Agent <ocsinv.conf> configuration file 
Creating OCS Inventory NG Agent </etc/ocsinventory-client> configuration directory 
Writing OCS Inventory NG Agent </etc/ocsinventory-client/ocsinv.conf> configuration file 
Creating OCS Inventory NG Agent <ocsinv.adm> configuration file 
Writing OCS Inventory NG Agent </etc/ocsinventory-client/ocsinv.adm> configuration file 
OK, OCS Inventory NG Agent configuration files setup successfully ;-) 

 
+----------------------------------------------------------+ 
| Installing OCS Inventory NG Agent cron configuration...  | 
+----------------------------------------------------------+ 

Creating OCS Inventory NG Agent cron configuration file 
Writing OCS Inventory NG Agent </etc/cron.d/ocsinventory-client> cron configuration file 
OK, OCS Inventory NG Agent cron configuration file setup successfully ;-) 


+----------------------------------------------------------+ 
| Lauching OCS Inventory NG Agent...                       | 
+----------------------------------------------------------+ 

OK, OCS Inventory NG Agent runs successfully ;-) 


Setup has created a log file /home/netadmin/Bureau/OCSNG_LINUX_AGENT_1.01/ocs_agent_setup.log. Please, save this file. 
If you encounter error while running OCS Inventory NG Agent, 
we can ask you to show us his content ! 

Enjoy OCS Inventory NG ;-) 

#

A partir de ce moment, un premier lancement de l'agent à été effectué. Et les résultats ont été transmis à l'interface d'administration.



Windows

Nous allons maintenant installer l'agent sur une machine utilisant Windows. Nous pourrons ainsi observer les différences entre les inventaires effectués sur ces deux environnements.

Il existe plusieurs agents disponibles pour les ordinateurs utilisant Windows, nous utiliserons ici celui qui offre le plus de possibilités, les autres étant détaillés dans les fonctions du client Windows. Il faut tout de même savoir que cette version est la plus lourde à mettre en place puisqu'elle effectue une installation sur le poste client et elle le fait sans utiliser les fonctions de déploiement propres à Windows.

Cet agent est téléchargeable sur le site officiel du projet, il est fourni avec deux autres exécutables que nous avons cités plus haut comme les « autres agents ». Nous lançons donc « OcsAgentSetup.exe ».

Après la présentation de l'installation et l'acceptation de la licence, on atteint un premier écran qui demande les coordonnées de la machine serveur:

Nous utiliserons comme « server Name » l'adresse IP de la machine serveur.

Ensuite, un chemin d'installation est demandé, celui par défaut convient généralement.

Il est à noter que l'agent Windows n'envoie pas son rapport immédiatement contrairement à l'agent Linux. Le premier inventaire se fera dans les 24 heures, mais il est toujours possible de forcer cet inventaire. Il existe deux méthodes:

ocsinventory /server:adresseIPduserveur /np

La valeur TTO_WAIT correspond à un compteur de secondes décrémenté par le service après son chargement en mémoire toutes les secondes. Modifier cette valeur alors que le service fonctionne est inutile puisqu'elle n'est plus consultée une fois le service démarré.

Méthodes alternatives:

Il existe deux autres méthodes d'inventaire sous Windows. Ces méthodes sont moins simples à mettre en place sur un réseau de PME mais peuvent s'avérer utile si le nombre de machine est important ou si les politiques de sécurité sont très strictes sur certaines machines. Le paquet de l'agent Windows contient deux autres binaires, c'est d'eux dont il est ici question.

Lors de l'appel de ces deux exécutables, il existe plusieurs possibilités en fonction de l'environnement de la machine cible:

Inventaire PC

Un autre point important lorsqu'il s'agit de gérer un réseau est de faire l'inventaire des logiciels installés et matériels connectés à chaque ordinateur du réseau afin de s'assurer que chaque machine restera utilisable et puisse être facilement remplacée ou mise à jour. Il est en général plus facil de gérer un parc ou tous les environnements logiciels sont les mêmes, de plus, un environnement logiciel à jour est plus sur si une attaque par un virus ou une intrusion réseau venait à être lancée.

Ces informations sont récupérées par les clients sur les machines du réseau. Ces derniers se connectent aux scripts de communication sur l'ordinateur que nous avons choisi pour cette tâche.

Les résultats sont présentés dans l'interface d'administration sous forme de tableau:

Et des résultats plus détaillés sont accessibles pour chaque machine lors d'un clic sur son nom, les informations sont alors regroupées sous forme de tableaux groupés par types d'informations:



Fonctions du client

Le client est en charge de périodiquement effectuer un inventaire de la machine sur laquelle il est installé. Les données qu'il peut recueillir diffèrent d'un système d'exploitation à l'autre. Par exemple, il ne sera pas possible d'interroger la base de registre sur un poste Linux en revanche, un agent Linux donnera la composition de la mémoire par barrettes.

Inventaire logiciel.

Puisque comme sous Windows, la gestion des librairies est confiée au système de fichiers, alors que sous de nombreuses distributions Linux, les librairies sont gérées par un gestionnaire de paquets en charge des librairies et programmes installés, ce qui permet un inventaire plus complet, mais aussi plus complexe à lire. De plus, sous les deux systèmes, les programmes copiés sur le disque manuellement, ne sont détectés par aucun des agents.

Inventaire matériel

L'agent est capable d'interroger le système d'exploitation pour obtenir des informations sur le matériel. Tout comme pour l'inventaire logiciel, il n'a pas vocation à remplacer le système d'exploitation, ce qui fait qu'il interroge ce dernier pour obtenir ses informations. Cela le mène à découvrir des écrans et claviers sous Windows alors que sous Linux ces matériels sont généralement considérés comme suffisamment standardisés et le système d'exploitation ne fournit pas d'informations à leur sujet.

Informations administratives



Afin de permettre à l'administrateur de compléter les rapports avec les données de son choix (par exemple, le type de hauts parleurs ou la date de fin de garantie) .

La déclaration de ces données se fait de le menu visible dans l'illustration ci-dessus et les données sont à mettre à jour via l'écran d'inventaire de la machine (grâce au bouton « mettre à jour ») .

Les champs déclarés peuvent être vus par le biais de la liste des machines du réseau et leurs valeurs sont stockées à la fois sur le serveur et sur les machines à inventorier afin de permettre une reprise de l'inventaire plus rapide (avec remplacement intégral du serveur si besoin) .

Rôle du Serveur

Le serveur à plusieurs rôles:

Le rôle du serveur d'inventaire s'arrête ici, mais s'il est couplé aux autres services serveurs du projet,, il sera en charge de présenter les résultats et de mettre à disposition les paquets comme nous le verrons maintenant.

Inventaire Réseau

OCS inventory dispose d'une fonction d'inventaire réseau via ses clients. Elle repose sur l'utilisation du protocole ARP pour détecter les matériels sur lesquels aucun agent n'a été installé.

Le choix d'ARP permet d'obtenir les adresses de tous les outils en place sur le réseau. Une version exploitant SNMP en parallèle est en projet mais ne semble pas être disponible avant quelques temps.

Ce système fonctionne grâce à une fonction appelée IPDISCOVER et qui est activée par le serveur d'administration. Sur chacun des sous réseau, une machine est élue pour explorer ce réseau. Dès lors, elle transmettra ces informations au serveur de communication qui les enregistrera dans la base de données.

Ces agents sont élus en fonction de plusieurs critères:

A partir de toutes ces informations, l'inventaire proposera à l'administrateur du réseau des informations sur les matériels qui y sont connectés. Un schéma de mon réseau de test se trouve en annexe.

Si l'on souhaite enregistrer les matériels détectés, il faut alors créer des catégories de matériels à la main pour enregistrer ces matériels. On utilisera les options de sécurité (le petit mur en feu) .

De là, on choisira l'option « Configuration » .

Puis on sélectionne « types de périphériques ».Enfin, il ne reste plus qu'à enregistrer les Types de périphériques que l'on souhaite inventorier les uns après les autres.

Une fois les catégories crées, on peut passer à la détection des périphériques réseau. Cette détection se fait après l'élection de machines pour l'effectuer ce qui peut prendre du temps. Il est possible de forcer cette détection en forçant l'inventaire plusieurs fois d'affiliée, mais l'inventaire peut ne pas être complet en suivant cette méthode.

Pour accéder aux résultats, dans les options de sécurité, il suffit d'accéder aux « Détail des réseaux inter-connectés » . Les réseaux détectés peuvent être nombreux, en fonction du réseau réel.

Dans cet écran, on peut voir plusieurs champs par réseaux. « Inventoriés » correspond aux machines disposant d'un agent, « Non inventoriés » correspond aux matériels qui ne sont pas équipés d'un agent IpDiscover, au nombre d'agents élus pour effectuer la détection et Identifiés aux éléments sans agents qui ont été « étiquetés » par un administrateur.

Pour étiqueter un matériel, il suffit de cliquer sur le nombre dans la colonne « non-inventoriés » pour accéder à la liste des matériels prêts à être classés.

A partir de ce moment, il appartient à l'administrateur de retrouver en fonction des adresses et du constructeur lorsqu'il est disponible la correspondance avec les matériels. Mais le logiciel ne peut pas en savoir plus sans installation préalable d'un agent. Ce qui n'est pas possible sur un routeur ou une imprimante. Ici, on peut constater plusieurs choses:

192.168.50.10 à été construit par fon,ce qui fait que l'on peut être sur que c'est le routeur wifi Fon actuellement connecté à mon réseau.

Le second est une console de jeux Wii, connectée à mon réseau, pour le savoir, j'ai dut comparer les adresses MAC depuis les consoles d'administration de la console et d'OCS.

Enfin, la dernière adresse est celle d'un PC virtuel sans agent qui est resté connecté à mon réseau le temps des inventaires.

Au moment de la capture, j'avais déjà enregistré ma Freebox avec l'étiquette « Routeur », c'est d'ailleurs elle qui apparaît comme « identifiée » dans la capture d'écran des réseaux détectés.

Pour enregistrer un matériel, il suffit de cliquer sur l'icône dans la colonne « Enregistrer » . Dès lors un écran d'enregistrement apparaît:

Le matériel peut alors être enregistré parmi la liste des matériels identifiés.

Cela peut s'avérer très utile dès que le nombre de matériels réseaux devient important, par exemple lorsqu'une entreprise dispose de nombreux smart phones, routeurs intelligents ou tout ce qui peut être objets communicants.

Préparation et déploiement d'un paquet.

Structure d'un paquet.

Un paquet est une simple archive zip pour les agents Windows, Il est théoriquement possible d'utiliser cette fonction avec les agents Linux, mais la fonctionnalité n'est pas encore très au point. Ils doivent être générés par l'administrateur du réseau mais cette tâche n'est pas réellement difficile à effectuer et l'administrateur peut utiliser les outils qu'il connaît déjà.

Chaque paquet peut se voir assigner une priorité entre 0 et 10, qui sera utilisée pour ordonnancer les téléchargements et les installations de paquets. Le niveau 0 toutefois, en plus d'être le premier niveau est un niveau qui force l'installation, un paquet de niveau 0 échoue à s'installer, alors le processus de déploiement ne continuera pas. Pour les autres niveaux, l'échec à l'installation n'entraînera pas l'arrêt des déploiements. Pour ces raisons il est déconseillé d'utiliser la priorité 0 à moins que les paquets déployés n'aient été testés au préalable sur un parc ou une machine de test.

Il existe trois types d'actions possibles pour cet outil:

Comment faire ?

Préparation du serveur

Tout d'abord, il faut configurer PHP pour permettre l'envoi de gros fichiers. Pour cela, il faut modifier le fichier /etc/php5/apache2/php.ini et modifier les lignes « upload_max_filesize = 2M » et « post_max_size = 8M » pour des variables plus souples telles que: 200M et 201M respectivement.

En fonction des distributions que le paquet d'OCSInventory NG utilise un fichier de configuration alternatif, par exemple la distribution Ubuntu effectue cette configuration dans le fichier « /etc/apache2/conf.d/ocsreports.conf » une fois le paquet installé. L'avantage de cette méthode est qu'elle permet de mettre en place des restrictions par application PHP via la configuration d'Apache. Dans notre cas, nous nous contenterons de la modification du fichier php.ini, mais dans le cas d'une machine partagée entre plusieurs applications php, l'approche d'une configuration par application est plus sécuritaire.

Ces valeurs représentent la taille maximale d'une archive que l'on souhaite déployer.

Ensuite, pour des raisons de sécurité, il faut activer un site en HTTPSv pour permettre le déploiement des paquets. Pour cela:

mkdir /etc/apache2/ssl
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/cacert.pem »

Pendant ce processus, il faudra donner l'adresse IP du serveur comme nom d'hôte.

SSLProtocol all 
SSLOptions +StdEnvVars 
SSLCipherSuite 
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 
SSLCertificateFile /etc/apache2/ssl/cacert.pem 
SSLCertificateKeyFile /etc/apache2/ssl/cacert.pem 
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ocsssl 
NameVirtualHost *:443 
SSLEngine On
ServerName 192.168.50.11
ErrorLog /var/log/apache2/errorssl.log
LogLevel warn
CustomLog /var/log/apache2/ocs443.log combined
ServerSignature Off
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
a2ensite ocsssl 
/etc/init.d/apache2 restart

Le serveur est alors prêt au déploiement de fichiers.

Il ne reste plus qu'à déployer (manuellement) le certificat (/etc/apache2/ssl/cacert.pem) auprès des clients du réseau. Dans le répertoire « C:\Program Files\OCS Inventory Agent » sous Windows et « /etc/ocsinventory-client » sous Linux sous le même nom.

Création et préparation des paquets

Nous allons présenter la création de trois types de paquets avant de les déployer afin de montrer rapidement les capacités du logiciel.

Préparation d'un paquet de type « Lancer »

Pour cet exemple, nous installerons Putty sur un poste Windows. L'avantage de Putty, c'est qu'il dispose d'un outil d'installation qui peut être rendu silencieux par l'utilisation de l'option /VERYSILENT. Il est possible d'informer l'utilisateur de l'installation du paquet ou d'informer OCS que l'utilisateur devra entrer des informations. En général ces deux options sont à proscrire puisque les opérations de maintenance du réseau sont, en général, cachées à l'utilisateur.

On remplira le formulaire de création dans le menu de télé-déploiement ainsi:

Une fois l'archive envoyée, il reste à définir les options de fragmentation, cette étape peut être ignorée sur des réseaux qui disposent d'une capacité suffisante sur de plus faibles réseaux, il peut être utiliser d'utiliser cette option.:

Le paquet est alors prêt comme l'indique le message affiché au retour à l'écran de création de paquets:



L'assignation d'un paquet étant une tâche commune à tous les types de paquets, nous la traiterons dans un chapitre suivant.

Préparation d'un paquet de type «Exécuter »

Pour le test de cette fonction, nous utiliserons un paquet msi pour Windows, lesquels se lancent à l'aide de la commande:

msiexec.exe /i php-5.2.8-win32-installer.msi /uninstall

J'ai choisi php pour deux raisons:

  1. Il est libre, donc je ne force personne à accepter quoique ce soit. (et vous pouvez l'installer sur plusieurs postes sans violer la licence)

  2. Il est assez difficile de trouver un logiciel proposant une installation en « .msi ». Heureusement, php le proposait.

Puisque nous passons par le déploiement de paquets d'OCS inventory, nous commençons par crée une archive zip contenant le paquet msi à sa racine.

Ensuite, on crée le fichier grâce dans l'écran suivant:

Ensuite, il ne reste plus qu'à finir d'enregistrer le paquet comme dans l'exemple précédent. Avant de passer à la phase d'activation.

Préparation d'un paquet de type « Stocker »

Ici, nous allons créer un paquet avec quelques documents et de le déployer sur le bureau Windows de tous les utilisateurs. On créera donc une archive zip qui contiendra un dans un dossier un document d'aide et à la racine un document à remplir. On compte déployer ces fichiers à l'adresse « C:\Documents and Settings\All Users\Bureau » afin d'être assuré qu'il soient visibles sur le bureau. Pour l'occasion, nous diffuserons un message à l'utilisateur afin de l'informer que ces documents doivent être remplis. Voici les options qui nous avons choisi:

Il ne reste plus qu'à activer et assigner le paquet aux PCs Windows comme à l'étape du paquet « Lancer ».

Activation, Assignation et télé-déploiement.

Ensuite, il faut activer le paquet toujours dans le menu télé déploiement en cliquant sur l'icône de la colonne « Activer ».

Puis dans le menu qui vient d'apparaître, entrer l'adresse du serveur (accessible depuis les postes disposant d'un agent) de déploiement récemment crée. Suivie de /download comme dans l'exemple suivant:

L'activation des paquets permet au serveur de proposer ces paquets aux divers agents, mais pour l'instant rien n'est encore définitif.

On peut vérifier qu'un paquet est activé dans le dernier écran du télé-déploiement: « activés », de là, il est aussi possible de désactiver un paquet via l'option « Supprimer ».

Passons à l'assignation. Pour cela, il faut effectuer une recherche sur l'ensemble des ordinateurs du parc sur lesquels on veut effectuer le déploiement. Nous prendrons pour premier exemple le déploiement du paquet « Exécuter ». Puis nous passerons aux suivants.

Premier exemple: les paquets « Lancer » et « Exécuter »

Nous effectuerons d'abord la recherche suivante:

Une fois validée la liste des systèmes correspondants sera présentée, et il faudra alors cliquer sur le lien « Télédéployer ». Ensuite, la liste des paquets disponibles est présentée, il faut choisir le paquet «putty » crée plus haut. Pour le paquet « Exécuter », il faudra plutôt choisir « php »

L'opération de déploiement peut être assez, longue, c'est pourquoi nous lancerons l'agent manuellement via la méthode de l'arrêt du service vue plus haut. On peut constater l'avancement dans en cliquant sur l'icône de la colonne « stats » dans l'écran d'activation des paquets, un diagramme y est présenté indiquant la progression du déploiement.

L'état des machines passe au travers des statuts suivants:

Une fois ce processus terminé, putty est disponible dans le menu de Windows. Et au prochain inventaire, le paquet apparaîtra dans le rapport d'installation sur les machines sur lesquelles il à été installé.

Second exemple: Le paquet « stocker »

Ensuite, nous allons lancer exactement la même procédure qu'à l'étape précédente, et après la durée du processus, un message apparaît sur l'écran de l'agent.



Puis, une fois le message pris en compte les fichiers sont accessibles sur le Bureau:

Conclusion:

Nous avons vu qu'il était possible d'effectuer de nombreuses tâches à l'aide de ce programme. Son utilisation peut faire gagner énormément de temps aux administrateurs systèmes et réseau d'une entreprise en automatisant les tâches d'inventaire et de mise à jour sur l'ensemble du réseau. Malheureusement la jeunesse de ce programme nuit à ses performances sur des environnements hétérogènes, même si aujourd'hui il est probablement le plus performant des logiciels d'inventaire sur les systèmes non-Windows.

Annexes

Schéma du réseau de test.

iRéseau: ensemble de matériels connectés entre eux. Ici, il s'agit d'ordinateurs, de routeurs et de périphériques tels que des imprimantes ou des PDA.

iiLogiciels:

iiiLogiciels propriétaires

ivLogiciels libres

vHTTPS: Hyper Text Transfer Protocol utilisant SSL