4 - Remontée d'un "type BIOS" pour fonctionnement correct des dictionnaires GLPI à l'autre bout (facultatif si vous n'avez pas absolument besoin d'un type de matériel)
L'objectif est de remonter le type de matériel.
Sur un Linux, on va par exemple trouver ce type d’information dans /usr/sbin/smbios
4 64 SMB_TYPE_CHASSIS (system enclosure or chassis)
[…]
Chassis Type: 0x17 (rack mount chassis)
Après vérification des propriétés disponibles via l’API VmWare utilisée par FusionInventory (https://www.vmware.com/support/developer/vc-sdk/visdk41pubs/ApiReference/index-properties.html), cette donnée ne semble pas disponible.
Décision arbitraire de remonter "Server" en dur pour ne pas avoir de valeur nulle.
Il faut modifier la sub createInventory dans le fichier perl\agent\FusionInventory\Agent\Task\ESX.pm
et insérer la commande "$inventory->setBios( { TYPE => 'Server' } );" juste après le "$inventory->setBios( $host->getBiosInfo() );"
...
$inventory->setBios( $host->getBiosInfo() );
--> insérer cette ligne
$inventory->setBios( { TYPE => 'Server' } );
<--
...
5 - Modification de la génération "factice" du device_id afin que celui-ci soit toujours identique au lieu de correspondre à l' "up-time" du serveur.
Il faut modifier la sub createFakeDeviceid dans dans le fichier perl\agent\FusionInventory\Agent\Task\ESX.pm
On force une date fixe (on se moque de la valeur du champ tant qu’elle n’évolue pas).
Nous utilisons déjà cette méthode pour l’inventaire de nos clients légers.
sub createFakeDeviceid {
my ( $self, $host ) = @_;
my $hostname = $host->getHostname();
my $deviceid = $hostname . '-2014-01-01-00-00-00';
#my $bootTime = $host->getBootTime();
#my ( $year, $month, $day, $hour, $min, $sec );
#if ( $bootTime =~
# /(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2}):(\d{1,2})/ )
#{
# $year = $1;
# $month = $2;
# $day = $3;
# $hour = $4;
# $min = $5;
# $sec = $6;
#}
#else {
# my $ty;
# my $tm;
# ( $ty, $tm, $day, $hour, $min, $sec ) =
# ( localtime(time) )[ 5, 4, 3, 2, 1, 0 ];
# $year = $ty + 1900;
# $month = $tm + 1;
#}
#my $deviceid = sprintf "%s-%02d-%02d-%02d-%02d-%02d-%02d",
# $hostname, $year, $month, $day, $hour, $min, $sec;
return $deviceid;
}
6 - Modification de la récupération du serial de l'ESX
Actuellement, sur certains blades, le script récupère le serial du chassis et non pas le celui de la lame.
Du coup, on se retrouve avec plein de doublons dans l'onglet de suivi des doublons par serial.
Après investigations, il semble que ce souci soit spécifique aux châssis Dell et HP ProLiant BL460c G1 / G6. (Je n'ai pas ce souci sur un châssis HP ProLiant BL460c Gen8 par exemple).
A priori, il faudrait déployer le "Proliant Pack" sur les Proliant et l'équivalent sur les châssis Dell. Mon service Système a décidé de ne pas le faire... je ne peux donc pas confirmer ce "diagnostique" ;-)