{{QRCODE>[[hebergement/fusioninventory]]}} # FusionInventory FusionInventory est un logiciel servant à l'inventaire et la maintenance d'un parc informatique à l'aide d'autres logiciels de ce type tels que GLPI ou OCS Inventory. Il permet notamment d'effectuer : - l'inventaire matériel & logiciel (avec agents ou sans agent en utilisant le SNMP) ; - le Wake-on-lan ; - le déploiement de logiciels ; - la découverte du matériel réseau connecté (utilisant Netbios, Nmap et SNMP). Le projet contient différents composants logiciel. * FusionInventory pour GLPI * Un serveur de communication qui est un plugin pour GLPI (logiciel de gestionnaire de parc). * FusionInventory-Agent * multi-plateforme : les différents systèmes d’exploitation sont supportés : Windows, Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, Sun Solaris, IBM AIX, HP-UX, DragonFly BSD et FreeBSD. * multi-serveur : l’agent peut communiquer avec plusieurs serveurs (OCS Inventory, FusionInventory for GLPI, Uranos, Mandriva Pulse2, OTRS, etc.) ; * plusieurs méthodes d’exécution : * exécution périodique, en utilisant les tâches planifiées ou le planificateur de tâches interne ; * peut être exécuté en daemon ou service Windows ; * peut être réveillé par le serveur si le serveur HTTP miniature est activé ; * modulaire : * inventaire matériel et logiciel (intégré) : * Wake-on-lan (intégré) ; * module NetDiscovery : découvre tous les matériels réseaux utilisant Netbios, nmap et SNMP ; * module NetInventory : inventaire utilisant des requêtes SNMP (pour les imprimantes, routeurs, switchs, …) ; * module Deploy : déploiement de logiciels avec la possibilité de faire de la copie de fichier en pair-à-pair. ## Infrastructure La configuration déployée sur l'infrastructure de supervision est la suivante: - Le plugin Fusion inventory est déployé dans la VM glpi2012 - Un agent est déployé dans la VM pour faire remonter les informations d'inventaire de la VM dans GLPI - Un agent est déployé dans l'hyperviseur pour la découverte et l'inventaire - Un agent est déployé sur le serveur mutualisé pour la découverte et l'inventaire .---------------------------------------------------------------------------------------------------------------. | s013e13p-snmp (xx.xx.xxx.xxx) | | | | .-----------------------------------------------------------------. | | | Glpi2012 (xx.xx.xxx.xxx) | | | '-=------------------------' | | | | | FusionInventory-Agent | | '-=-----------------------' '-=------------------------' | | | | s013e13p-snmp.dgfip | découverte | | Plugin FusionInventory | | FusionInventory-Agent | | | | | 2017-02-06-16-06-22 |<--------------->| | | master2012 | | | | | - NetDiscovery | | | |<--->| 2017-01-24-11-35-21 | | | | | - NetInventory | inventaire | | | | - NetInventory | | | | | |<--------------->| | | | | | | '--------------------------' | '-------------------------' '--------------------------' | | | | ^ ^ | | | .--------|--|-----------------------------------------------------. | | | | | .----------------------------------------------------|--|-------------------------------------------------------. | | découverte| |inventaire .----------------------------------------------------|--|-------------------------------------------------------. | Mutual (xx.xxx.xxx.xxx) | | | | | | | | | | | | v v | | '-=------------------------' | | | FusionInventory-Agent | | | | master2012 | | | | 2017-02-08-16-43-55 | | | | - NetDiscovery | | | | - NetInventory | | | | | | | '--------------------------' | | | | | | | .---------------------------------------------------------------------------------------------------------------. ## Installation et configuration ### Installation de l'Agent ^ Agent ^ Debian/Ubuntu ^ RHEL/Centos ^ | Inventory | Inventory fusioninventory-agent_2.5.2-1_all.deb | fusioninventory-agent | NetDiscovery - NetInventory | fusioninventory-agent-task-network_2.5.2-1_all.deb | fusioninventory-agent-task-inventory Pour Ubuntu/Debian il faut installer les dépendances suivantes:\\ \\ `apt -y install dmidecode hwdata ucf hdparm`\\ `apt -y install perl libuniversal-require-perl libwww-perl libparse-edid-perl`\\ `apt -y install libproc-daemon-perl libfile-which-perl libhttp-daemon-perl`\\ `apt -y install libxml-treepp-perl libyaml-perl libnet-cups-perl libnet-ip-perl`\\ `apt -y install libdigest-sha-perl libsocket-getaddrinfo-perl libtext-template-perl`\\ `apt -y install libxml-xpath-perl libyaml-tiny-perl`\\ \\ Pour fusioninventory-agent-task-network, il faut aussi installer ces dépendances:\\ \\ `apt -y install libnet-snmp-perl libcrypt-des-perl libnet-nbname-perl`\\ \\ Pour la prise en charge de SNMPv3 pour l'inventaire du réseau, li faut également installer:\\ \\ `apt -y install libdigest-hmac-perl`\\ Pour fusioninventory-agent-task-deploy, il faut installer ces dépendances:\\ \\ `apt -y install libfile-copy-recursive-perl libparallel-forkmanager-perl`\\ \\ Pour pouvoir exécuter la tâche WakeOnLan, il faut aussi installer cette autre dépendance:\\ \\ `apt -y install libwrite-net-perl` ### Configuration de l'agent Sous Unix, l'agent lit sa configuration à partir d'un fichier de configuration, dont l'emplacement dépend de la méthode d'installation: * `/etc/fusioninventory/agent.cfg`: par défaut * `/opt/fusioninventory/agent.cfg`: mpkg OSX * `/usr/local/etc/fusioninventory/agent.cfg`: port FreeBSD Il est fortement recommandé de ne pas modifier ce fichier, cela empêcherait sa mise à jour (surtout lorsqu'on utilise un paquet linux). Il simplement suffit de vérifier que l'inclusion "conf.d/" n'est pas commentée (ne commence pas par un #). La configuration spécifique devrait alors aller dans n'importe quel fichier conf.d/*.Cfg. Sous Windows, l'agent lit sa configuration à partir d'une clé de registre, dont l'emplacement dépend de l'architecture: ``` HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent: Windows HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FusionInventory-Agent: agent 32 bits sur Windows 64 bits ``` La plupart des paramètres de configuration ont une valeur unique. Ceux à valeurs multiples utilisent un séparateur de champ virgule. Par exemple, logger=Stderr,File La seule exigence de configuration de l'agent déployé est d'indiquer dans ce fichier l'URL du plugin fusioninventury sur le serveur GLPI: ``` server = http://xx.xx.xxx.xxx/glpi/plugins/fusioninventory/ ``` Il est possible d'exécuter localement chacun des services individuellement.\\ \\ - **fusioninventory-netinventory** permet de déclencher une tâche d'iventaire vers une cible `fusioninventory-netinventory --host `\\ - **fusioninventory-netdiscovery** permet de lancer une découverte réseau sur un range d'adresse `fusioninventory-netdiscovery --first --last `\\ -**fusioninventory-injector** permet de remonter les informations d'inventaires collectées dans un fichier xml vers les serveur: `fusioninventory-injector --url --file ` plusieurs cibles ne signifie pas "exécuter une fois, envoyer des résultats plusieurs fois", mais "exécuter et envoyer des résultats plusieurs fois", ce qui implique des résultats potentiellement différents. ## Configuration du serveur * L'onglet **Général** permet de détecter et configurer les agents * L'onglet **Tâches** permet de configurer les tâches, les créneaux horaires et de suivre l'exécution des jobs * L'onglet **Règles** permet de configurer les rêgles d'imports * L'onglet **Réseau** permet de définir les cibles ### Règles d'import Des règles d'import et de liaison ont été prépositionné pour les types de matériels suivants: * COMPUTER * NETWORKING * PRINTER * STORAGE * POWER * PHONE Le diagramme d'état ci-dessous présente la configuration des règles d'import pour le type de matériel COMPUTER: * | '----------------+-----------------' |[YL] Computer constraint (name) | +----------------------------------+ | Nom n'existe pas | '----------------+-----------------' non | oui '-------------------+--------------------' | | v | '-----------------------------------------' | |[PK] Computer update (by serial + uuid) | | +-----------------------------------------+ | | Serial Number déjà présent dans GLPI | | | Serial Number existe | | | UUID est déjà présent dans GLPI | | | UUID existe | | '------------+----------------------------' | oui | non | '-----------------+---------' | | | | | v | | '-------------------------------------' | | |[PK]Computer update (by serial) | | | +-------------------------------------+ | | | Serial Number déjà présent dans GLPI| | | | Serial Number existe | | | '--------------------+----------------' | | | | | v | | '-------------------------------------' | | |[GR] Computer update (by uuid) | | | +-------------------------------------+ | | | UUID est déjà présent dans GLPI | | | | UUID existe | | | '-------------------+-----------------' | | | | | v | | '-------------------------------------' | | |[GR] Computer update (by mac) | | | +-------------------------------------+ | | | MAC est déjà présent dans GLPI | | | | MAC existe | | | '-------------------+-----------------' | | oui | non | | '-----------------------+-----' | | | | | | | v | | | '-------------------------------------' | | | |[PK] Computer update (by name) | | | | +-------------------------------------+ | | | | Nom est déjà présent dans GLPI | | | | | Nom existe | | | | '---------------------+---------------' | | | oui | non | | | '---------------------------+-----' | | | | | | | | | v | | | | '-----------------------------------------' | | | | |[PK] Computer import (by serial + uuid) | | | | | +-----------------------------------------+ | | | | | UUID existe | | | | | | Serial Number existe | | | | | '------------------------+----------------' | | | | oui | non | | | | '--------------------------------+-----' | | | | | | | | | | | v | | | | | '-------------------------------------' | | | | | |[PK] Computer import (by serial) | | | | | | +-------------------------------------+ | | | | | | Serial Number existe | | | | | | '-------------------------+-----------' | | | | | oui | non | | | | | '------------------------------------+-----' | | | | | | | | | | | | | v | | | | | | '-------------------------------------' | | | | | | |[GR] Computer import (by uuid) | | | | | | | +-------------------------------------+ | | | | | | | UUID existe | | | | | | | '----------------------------+--------' | | | | | | | | | | | | | v | | | | | | '-------------------------------------' | | | | | | |[GR] Computer import (by mac) | | | | | | | +-------------------------------------+ | | | | | | | MAC existe | | | | | | | '-----------------------------+-------' | | | | | | | | | | | | | v | | | | | | '-------------------------------------' | | | | | | |[PK] Computer import (by name) | | | | | | | +-------------------------------------+ | | | | | | | Nom existe | | | | | | | '------------------------------+------' | | | | | | oui | non | | | | | | '----------------------------------------+-------' | | | | | | | | | v v v v v v v v .-------------------------------------------. .-------------------------------------------. |[GR] Liaison FusionInventory | |[RD] Liaison FusionInventory | | Assigner Liaison | | Assigner Importation refusée (pas de log) | .----------------------+--------------------. .--------------------+----------------------. | | '---------------------+----------------------' | (o) * | '--------+--------' | contrainte | .-----------------. | mac existe pas | | nom existe pas | '--------+--------' | oui | non '-----+-----' | | | | | v | '----------------------------' | | maj_mac_nom | | .----------------------------. | | mac existe | | | nom existe | | | mac déjà present dans glpi | | | nom déjà present dans glpi | | '--------------+-------------' | | | oui | non | '--------+--------' | | | | | v | | '-----------------------------' | | | maj_mac | | | .-----------------------------. | | | mac existe | | | | mac déjà present dans glpi | | | '-------------------+---------' | | | | | oui | non | | '---------+-------' | | | | | | | v | | | '----------------------------' | | | | maj_nom | | | | .----------------------------. | | | | nom existe | | | | | nom déjà present dans glpi | | | | '------------+---------------' | | | | | | | oui | non | | | '----------+----------' | | | | | | | | | v | v v v '------------------------' | '-------------------------------------' | import_mac_nom | | rejet | maj | .------------------------. | .-------------------------------------. | mac existe | | | Liaison Fusionlnventory | | nom existe | | | Importation refusee (pas de log) | | mac est vide dans glpi | | '------------------+------------------' | nom est vide dans glpi | | | '-------+----------------' | | | | | oui | non | | '--------------+--------------' | | | | | | | v | | | '------------------------' | | | | import_mac | | | | .------------------------. | | | | mac existe | | | | | mac est vide dans glpi | | | | '---------------+--------' | | | | | | | oui | non | | | '-----------+-----------' | | | | | | | | v | | | | '------------------------' | | | | | import_nom | | | | | .------------------------. | | | | | nom existe | | | | | | nom est vide dans glpi | | | | | '---------+--------------' | | | | | | | | | oui | non | | | | '----------+--------------' | | | | | | | | | | v | | | | | '-------------------------' | | | | | | import | | | | | | .-------------------------. | | | | | | Liaison Fusionlnventory | | | | | | | Liaison | | | | | | '------------+------------' | | | | | | | | | | | | | | '---------------------------+----------------+---------------+---------------+--------' | (o) [BB]: {"fill":"#5555BB","a2s:delref":true} [LB]: {"fill":"#bbddee","a2s:delref":true} [PK]: {"fill":"#FFAAAA","a2s:delref":true} [OR]: {"fill":"#FF7733","a2s:delref":true} [BG]: {"fill":"#114444","a2s:delref":true} [GR]: {"fill":"#99dd99","a2s:delref":true} [RD]: {"fill":"#EE3322","a2s:delref":true} [YL]: {"fill":"#ffff33","a2s:delref":true} ### Programmation des tâches Le plugin FusionInventory dispose d'un calendrier interne permettant de programmer les tâches d'inventaire/découverte. ^ Etiquette ^ Plage horaire ^ | everyday | Lundi 12:00 - 14:00\\ Mardi 12:00 - 14:00\\ Mercredi 12:00 - 14:00\\ Jeudi 12:00 - 14:00\\ Vendredi 12:00 - 14:00 | | lundi am | Lundi 04:00 - 07:00 | | mardi am | Mardi 04:00 - 07:00 | | mercredi am | Mercredi 04:00 - 07:00 | | jeudi am | Jeudi 04:00 - 07:00 | | vendredi am | Vendredi 04:00 - 07:00 | | samedi am | Samedi 04:00 - 07:00 | | dimanche am | Dimanche 04:00 - 07:00 | ^ ^^ Lundi ^ Mardi ^ Mercredi ^ Jeudi ^ Vendredi ^ Samedi ^ Dimanche ^ ^ decouverte Z4 ^ am | | | | | @orange: | | | ^ ::: ^ pm | | | | | | | | ^ decouverte réseau xx.xxx ^ am| | | | | | | @orange: | ^ ::: ^ pm | | | | | | | | ^ decouverte reseau xx.xx ^ am | | | | | | @orange: | | ^ ::: ^ pm | | | | | | | | ^ inventaire reseau ^ am | @palegreen: | | | | | | | ^ ::: ^ pm | | | | | | | | ^ inventaire serveurs ^ am | | | @palegreen: | | | | | ^ ::: ^ pm | | | | | | | | ^ inventaire snmp13 ^ am | | | | | | | | ^ ::: ^ pm | @#6495ed: | @#6495ed: | @#6495ed: | @#6495ed: | @#6495ed: | | | ^ inventaire z4 ^ am | | @palegreen: | | | | | | ^ ::: ^ pm | | | | | | | | ### Périmètre des tâches ^ Libellé de la tâche ^ Période ^ Cibles ^ Agent ^ | @orange: decouverte Z4 | vendredi am | Plage IP lan xxx 20 33 | s013e13p-snmp.dgfip-2017-02-06-16-06-22 | | @orange: decouverte réseau xx.xxx | dimanche am | Plage IP lan xxx 111\\ Plage IP lan xxx 212\\ Plage IP lan xxx 222\\ Plage IP lan xxx 224\\ Plage IP lan xxx 225\\ Plage IP lan xxx 226\\ Plage IP lan xxx 251\\ Plage IP lan xxx 252\\ Plage IP lan xxx 253\\ Plage IP lan xxx 254\\ Plage IP lan xxx 506 | s013e13p-snmp.dgfip-2017-02-06-16-06-22 | | @orange: decouverte reseau xx.xx3 | samedi am | Plage IP lan xx.100\\ Plage IP lan xx.101\\ Plage IP lan xx.102\\ Plage IP lan xx.xxx\\ Plage IP lan xx.200\\ Plage IP lan xx.201\\ Plage IP lan xx.247\\ Plage IP lan xx.248\\ Plage IP lan xx.254 | s013e13p-snmp.dgfip-2017-02-06-16-06-22 | | @palegreen: inventaire reseau | lundi am | Matériel réseau BC_PETRA_TXXA--xx.xxx.xxx.x\\ Matériel réseau Modele_3com_4500-24\\ Matériel réseau novpxcx1\\ Matériel réseau Sf034_A5500_013SNS1-1\\ Matériel réseau Sw009_5500_013IBM1\\ Matériel réseau Sw012_4500_013PKI1\\ Matériel réseau Sw021_5500_013SNS3\\ Matériel réseau gavpgcl001\\ Plage IP lan xxx 212\\ Matériel réseau HP 5510 48G 4SFP+ HI_CN7AH0Z03L | s013e13p-snmp.dgfip-2017-02-06-16-06-22 | | @palegreen:inventaire serveurs | mercredi am | Plage IP lan xxx 222\\ Plage IP lan xxx 212\\ Plage IP lan xxx 224\\ Plage IP lan xxx 225\\ Plage IP lan xxx 226\\ Plage IP lan xxx 251\\ Plage IP lan xxx 252\\ Plage IP lan xxx 253\\ Plage IP lan xxx 254\\ Plage IP lan xxx 506 | s013e13p-snmp.dgfip-2017-02-06-16-06-22\\ Agent master2012-2017-02-08-16-43-55 | | @#6495ed:inventaire snmp13 | everyday | Plage IP hote snmp13 | s013e13p-snmp.dgfip-2017-02-06-16-06-22 | | @palegreen: inventaire z4 | mardi am | Plage IP lan xxx 20 33 | s013e13p-snmp.dgfip-2017-02-06-16-06-22 |