The FusionInventory project RMLL / LSM 2012 Walid Nouh - Mathieu Simon Genève Juillet 2012
About us Walid Nouh FusionInventory contributor GLPI contributor Working for TECLIB, Montpellier
About us Mathieu Simon FusionInventory contributor (l10n) GLPI plugin translation Working for Gymnasium Köniz-Lerbermatt, Bern
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
FusionInventory timeline 2006 First unified inventory agent for Unix 2008 First server implementation (Tracker, a plugin for GLPI) 2009 Agent and server integration 2010 FusionInventory project is born! 2010 Uranos integration 2011 Rudder (cfengine) integration 2012 OTRS integration
The project FusionInventory is a community driven project Active mailing list IRC: #FusionInventory on FreeNode Forge, Git repositories, etc
Contributors 4 active developers An active community 2 companies involved We re looking for more contributors!
Contributors 4 active developers An active community 2 companies involved We re looking for more contributors!
Before starting FusionInventory is not a software Agent: a software to install on the computers Server: handles communication with the agents Task: is prepared by the server, executed by an agent
pull / push FusionInventory enables push or pull mode pull : Agent = Server the agent contacts the server. push : Agent = Server the server initiates the contact.
Available servers today 4 solutions so far FusionInventory for GLPI http://www.fusioninventory.org Uranos http://uranos.sourceforge.net/ Rudder by Normation http://www.normation.com/#produits OCS Inventory NG Mandriva Pulse 2... it s also possible to perform local XML inventory (soon: switch to JSON).
In contact with developers of FusionDirectory OTRS ITSM (work already in progress)
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Why GLPI for the server? We re also members of the GLPI community Motivation: Don t reinvent the wheel! Avoid having a second database and synchronization Focus on what s important to us - let GLPI do the rest
GLPI: about (1/4) Powerfull web based asset management software Project started in 2003 LAMP Provides a complete plugin API
GLPI: inventory (2/4) Computers, screens, printers, etc Network devices, phones Financial informations Warranties Licenses
GLPI: Service Desk (3/4) ITIL compatible Servicedesk Incident management Problem management Statistics
GLPI (4/4) Reports and statistics Powerful authorization system (LDAP, IMAP/POP, etc) WebSSO (CAS, LemonLDAP, etc)
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Agent: Installation Many ways to do it Distribution packages Debian, Fedora, EPEL, Ubuntu, Mageia,... Windows installer GPO, psexec,... Static prebuilt packages: untar and run 62 differents system so far Tarball and CPAN
Agent: Installation There s also an Android agent available on Google Play.
Supported operating systems Linux Windows MacOSX BSD illumos AIX HP-UX Solaris Android
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Network discovery Quickly detect and collect all connected devices nmap NetBIOS SNMP queries
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
... INTERLUDE...
SNMP SNMP origin A standard First RFC in 1988 Designed to monitor equipments 3 versions 1, 2c, 3 (Cyphering) OID: Information location MIB: A collection of OIDs
SNMP: what for in FusionInventory? How do we use SNMP? Identify remote devices (network equipments, printers,...) Perform a remote inventory Get the most important informations
SNMP: a nightmare Please support my hardware, here is the MIB! Might be hard to find Often no free or not redistributable Important informations might be missing But worth, they may be wrong!
SNMP: a nightmare Please support my hardware, here is the MIB! Might be hard to find Often no free or not redistributable Important informations might be missing But worth, they may be wrong!
SNMP: an example Example: Cisco 6500 firmware 12.2(33)SXI2a (02-Sep-09 01:00) Serial OID:.1.3.6.1.2.1.47.1.1.1.1.11.1 12.2(33)SXI3 (27-Oct-09 11:12) Serial OID:.1.3.6.1.2.1.47.1.1.1.1.11.2 = Gni?!
SNMP: outch
SNMP: how to be reliable? We prepared our own MIB Manual work for each equipment stored in an XML file Defines relations between an OID and an information ex: serial number OID 1.2.4.34.53... Supports dynamics OIDs
SNMP: how to be reliable? A centralized database We re implementing a centralized database In Beta stage You create and account and upload snmpwalks The tool helps you to make the model It ll be available in the next release!
... END OF INTERLUDE...
SNMP: network equipments (1/3) Common informations Serial number Supplier Model Firmware version MAC address CPU load / RAM etc
SNMP: network equipments (2/3) Advanced support Number of ports Speed Internal status Errors counters VLAN Trunk (tagged)...
SNMP: network equipments (3/3) Port to port connections MAC address one to many LLDP / CDP discovery POIP informations, etc
SNMP: a network equipment example
SNMP: Printers (1/2) General information Serial number Supplier Model Firmware Memory MAC Address etc
SNMP: Printers (2/2) Advanced informations Cartridges state Pages counters
SNMP: a printer example
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Wake On Lan WoL Agent can be used as a proxy to send WoL packets.
Wake On Lan: Example Example A remote network 50 computers What FusionInventory can do Wake up all computers at 2 am for updates.
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Software deployment (1/2) What can be done Perform actions on the target computer Send files Consume less bandwith thanks to peer to peer Attention: FI is not a configuration management tool!
Software deployment (2/2) Why a new software deployment solution? Use existing GLPI UI Use GLPI habilitations (groups/profils/entities) Multi-platform
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
vcenter / ESX / ESXi The problem Black boxes: no way to install an agent on the host...
vcenter / ESX / ESXi The solution The agent can use SOAP API to: inventorize hardware list virtual machines per host inventorize each ESX box (in case of a vcenter)
vcenter / ESX / ESXi: the command line tool fusioninventory esx host vcenter user foo \ password bar directory /tmp Send inventories to the server : fusioninventory i n j e c t o r v f i l e /tmp/. ocs \ u https : / / server / plugins / fusioninventory /
vcenter / ESX / ESXi: GLPI UI An interface in GLPI Define credentials Define vcenter/esx/esxi address Plan inventories
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Informations gathered (1/3) BIOS PCI modules memory slots CPUs hard drivers, drives, etc motherboard operating system screens ports slots partitions software
Informations gathered (2/3) connected users video cards virtual machines soundcards modems environment variables USB devices network configurations batteries printers processes antivirus LVM
Informations gathered (3/3) Android: Simcard, IMEI, etc
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Some statistics Today 194 Perl modules 21851 lines of code 938 unit tests
Unit tests What for? test parsing for OSes that we don t have check Win32 code from another OS from WMI to registry check sensitive things unicode, HTTPS, etc
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
What FusionInventory can bring to you Several scenarios Use inventory in your own application Extend inventory with your own modules Interface with GLPI or other Uranos, soon OTRS, etc Create new tasks
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
What else?
Our roadmap Next steps: FusionInventory Agent 2.3.x Tool to edit SNMP XML models NUT integration Transition in progress: OCS/XML REST/JSON planned for agent 3.0.0 already used by OTRS
Our roadmap Next steps: FusionInventory Agent 2.3.x Tool to edit SNMP XML models NUT integration Transition in progress: OCS/XML REST/JSON planned for agent 3.0.0 already used by OTRS
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Real use experience Why use FusionInventory and GLPI (1/2): 2 schools were merged and had grown: 400 each 1000 students today IT departments merged and quickly grown 2008: Regular financial audit - including IT assets. We had to get a an inventory without tons of man-hours: QUICKLY.
Real use experience Why use FusionInventory and GLPI (2/2): Proprietary solution highly cost intensive - while restricted in features Experience with superiors: If it s OSS, it has to work OCS was able to get all our computers data GLPI had the nice UI + held all other asset data
Real use experience OCSinventory-ng side: OCS lagged behind with Windows compatibility, regular GLPI sync problems Why FusionInventory: Client: Agent easier to deploy 3 platforms Server: PHP + Perl PHP Deployment: 1 internal git tree of GLPI + plugins IT staff: 2 UIs 1 UI
Real use experience OCS Agent: the dull duck - sorry guys... OCS lagged behind with Windows compatibility, regular sync problems Why FusionInventory: Client: Agent easier to deploy 3 platforms Server: PHP + Perl PHP Deployment: 1 internal git tree of GLPI + plugins IT staff: 2 UIs 1 UI
The good, the bad... There are also downsides - nothing is perfect: Documentation mostly fr-fr focused l10n: de-de had quite some frenchisms FI for GLPI lags behind major GLPI releases Ticket notifications require lots of local tuning (yet)... no: There is no true ugly thing I found
Finally GLPI + FI automated lots of taks no sysadmin wants to do manually with +300 computers We still use a fraction of GLPI s features, but growing (Cert management!) Auditability Made superiors happy OSS proved to work: Swiss-german education - normally not that easy Got in touch with nice community Have to polish my french regularly ;-)
Outline Project overview GLPI and FusionInventory Agent: installation and OS support Task: Network discovery Task: network inventory Task: Wake On Lan Task: software deployment Task: vcenter / ESX / ESXi inventory Task: inventory QA The developer point of view Soon to come Real use experience Questions
Questions? Question?
Thanks Thanks! Windows http://www.flickr.com/photos/ aeu04117/430338509/sizes/z/in/photostream/ AIX http: //www.flickr.com/photos/pchow98/5115638572/ MacOSX http://www.flickr.com/photos/adriannier/ 5555516312/sizes/l/in/photostream/ Cisco 6500 http://www.flickr.com/photos/joachim_s_ mueller/3084164647/sizes/z/in/photostream/ Teletubbies http://www.flickr.com/photos/ tudor/232849285/lightbox/ Worker http://www.flickr.com/photos/wsdot/ 6783674428/sizes/l/in/photostream/