
Sommaire
Introduction
Pour ce nouvel article, nous allons étudier l’inventaire des serveurs ESXi à travers l’agent GLPI. La supervision des serveurs ESXI est un pilier fondamental de la gestion efficace d’un parc informatique. L’intégration de GLPI offre la possibilité d’automatiser ce processus, garantissant ainsi un suivi rigoureux des ressources. Dans cet article, nous explorerons les prérequis nécessaires à l’utilisation de cette fonctionnalité, les étapes pour effectuer l’inventaire des serveurs ESXi manuellement via la CLI, ainsi que la méthode que je propose pour automatiser ce processus à l’aide d’un script et d’une tâche planifiée.
Configuration de l’agent
Comme pour le scan réseau, vous devez savoir que l’inventaire à distance des serveurs ESXI repose sur un agent installé, pour lequel la fonctionnalité « ESX remote inventory support » doit être installée. Ces paramètres sont essentiels pour garantir une collecte des informations efficace des serveurs distants
Si vous ne disposez pas d’agent, vous pouvez suivre mon tutoriel dédié à l’installation d’un agent sur les systèmes Windows et Linux
Pour accomplir cette tâche, il vous suffit de relancer l’agent sur un hôte, de cocher l’option correspondante et de terminer l’installation :

Inventaire manuel
Pour réaliser l’inventaire des serveurs ESXi de façon manuelle, nous allons utiliser la ligne de commande en suivant les étapes appropriées via l’interface en ligne de commande (CLI) de VMware ESXi
La première étape sera donc d’ouvrir un terminal powershell en tant qu’administrateur pour exécuter des lignes de commande
Une fois sur le terminal, nous pouvons nous diriger vers le dossier où est stocké l’agent permettant l’inventaire ESXi à travers cette commande
Set-Location ‘C:\Program Files\GLPI-Agent’
Vous pouvez afficher les différentes options grâce à cette commande :
./glpi-esx –help
Premièrement, nous allons exporter les fichiers de configuration. Le dossier de destination doit exister, sinon la commande ne fonctionnera pas !
./glpi-esx --host 192.168.1.200 --user administrator@vsphere.local --pasword motdepasse --path C:\Temp\esxi
Un fichier qui comprend les informations de l’ESXi au format XML est généré

La seconde étape est logiquement d’envoyer ce fichier xml vers GLPI. Vous pouvez également ajouter l’option -v pour avoir le mode verbose
./glpi-injector -f esxi-colin.home-2024-01-30-19-35-48.xml --url 192.168.1.207/front/inventory.php
Vous devriez pouvoir visualiser vos serveurs ESXi dans l’onglet « Ordinateur » de GLPI, confirmant ainsi l’intégration réussie de l’inventaire ESXi avec GLPI

Inventaire automatique
Script
Nous venons de voir comment faire l’inventaire des serveurs ESXI de façon manuelle. L’automatisation est préférable à la méthode manuelle, car cette dernière est chronophage et peut entraîner une perte de temps significative, tandis que l’automatisation permet d’améliorer l’efficacité et de réduire les tâches répétitives.
Pour simplifier et automatiser le processus, j’ai développé un script PowerShell qui sera planifié par une tâche pour s’exécuter de manière hebdomadaire, permettant ainsi d’automatiser l’inventaire des serveurs ESXi sans nécessiter d’interventions manuelles ultérieures
Bien sûre, vous devrez adapter les différents identifiants et adresse IP à votre environnement
Voici le script :
#Definition des variables1
$glpitools = "C:\Program Files\GLPI-Agent"
$path = "c:\temp\esxi\"
$esxipath =(Get-ChildItem $path).Count
$esxifilename = (Get-ChildItem $path).Name
#Condition if pour creer le fichier c:/temp/esxi s'il n'existe pas
if (Test-Path $path)
{
Write-Host "Le fichier existe deja"
}
else
{
New-Item -Path "C:\temp\" -ItemType Directory -Name "esxi"
}
#Condition if pour creer le fichier c:/temp/esxi s'il n'existe pas
if (Test-Path $path)
{
Write-Host "Le fichier existe deja"
}
else
{
New-Item -Path "C:\temp\" -ItemType Directory -Name "esxi"
}
#Verification si le répertoire c:/temp/esxi contient des fichiers
if ($esxipath -eq 0 )
{
Write-Host "Le repertoire est vide"
}
else
{
Write-Host "Le repertoire n'est pas vide. Je vais proceder a la suppression"
Remove-Item -Path $path/*
}
#Commande pour se placer dans le fichier glpi ou se trouve le script qui permet de recuperer les informations des esx
Set-Location $glpitools
#Commande pour récupérer les informations des esxi
.\glpi-esx.bat --host 192.168.1.200 --user administrator@vsphere.local --pasword motdepasse --path $path
#Definition des variables2
$esxipath =(Get-ChildItem $path).Count
$esxifilename = (Get-ChildItem $path).Name
#Boucle pour envoyer les informations sur GLPI tant qu'il y a un fichier
foreach ($resultat in $esxifilename)
{
$finalpath = $path + $resultat
.\glpi-injector.bat -f $finalpath --url http://192.168.1.207/front/inventory.php
}
Explication du script
Le script est séparé en plusieurs parties
Cette première partie définie les premières variables et vérifie si le dossier C:/temp/esxi existe. S’il n’existe pas, il le crée
#Definition des variables1
$glpitools = "C:\Program Files\GLPI-Agent"
$path = "c:\temp\esxi\"
$esxipath =(Get-ChildItem $path).Count
$esxifilename = (Get-ChildItem $path).Name
#Condition if pour creer le fichier c:/temp/esxi s'il n'existe pas
if (Test-Path $path)
{
Write-Host "Le fichier existe deja"
}
else
{
New-Item -Path "C:\temp\" -ItemType Directory -Name "esxi"
}
#Condition if pour creer le fichier c:/temp/esxi s'il n'existe pas
if (Test-Path $path)
{
Write-Host "Le fichier existe deja"
}
else
{
New-Item -Path "C:\temp\" -ItemType Directory -Name "esxi"
}
#Verification si le répertoire c:/temp/esxi contient des fichiers
if ($esxipath -eq 0 )
{
Write-Host "Le repertoire est vide"
}
else
{
Write-Host "Le repertoire n'est pas vide. Je vais proceder a la suppression"
Remove-Item -Path $path/*
}
#Commande pour se placer dans le fichier glpi ou se trouve le script qui permet de recuperer les informations des esx
Set-Location $glpitools
#Commande pour récupérer les informations des esxi
.\glpi-esx.bat --host 192.168.1.200 --user administrator@vsphere.local --pasword motdepasse --path $path
#Definition des variables2
$esxipath =(Get-ChildItem $path).Count
$esxifilename = (Get-ChildItem $path).Name
#Boucle pour envoyer les informations sur GLPI tant qu'il y a un fichier
foreach ($resultat in $esxifilename)
{
$finalpath = $path + $resultat
.\glpi-injector.bat -f $finalpath --url http://192.168.1.207/front/inventory.php
}
Cette seconde partie va traiter l’import du fichier qui contient les informations du ou des serveurs ESXI. La première condition if ci-dessous permet de nettoyer le dossier C:/Temp/esxi des anciens fichiers au format XML, et ensuite nous exécutons la commande permettant de rapatrier les fichiers XML de configuration
#Verification si le répertoire c:/temp/esxi contient des fichiers
if ($esxipath -eq 0 )
{
Write-Host "Le repertoire est vide"
}
else
{
Write-Host "Le repertoire n'est pas vide. Je vais proceder a la suppression"
Remove-Item -Path $path/*
}
#Commande pour se placer dans le fichier glpi ou se trouve le script qui permet de recuperer les informations des esx
Set-Location $glpitools
#Commande pour récupérer les informations des esxi
.\glpi-esx.bat --host 192.168.1.200 ----user administrator@vsphere.local --pasword motdepasse --path $path
La dernière partie du script définit de nouvelles variables avec les fichiers importés et contient une boucle qui envoie les informations à GLPI pour chaque fichier présent dans le dossier C:/temp/esxi
#Definition des variables2
$esxipath =(Get-ChildItem $path).Count
$esxifilename = (Get-ChildItem $path).Name
#Boucle pour envoyer les informations sur GLPI tant qu'il y a un fichier
foreach ($resultat in $esxifilename)
{
$finalpath = $path + $resultat
.\glpi-injector.bat -f $finalpath --url http://192.168.1.207/front/inventory.php
}
Création de la tâche planifiée
Maintenant que notre script est prêt, nous devons planifier une tâche afin d’automatiser le déploiement sans intervention manuelle
Sur le serveur ou l’agent est installé, nous allons ouvrir le planificateur de tâches et sélectionner « Créer une tâche »

Nous allons indiquer un nom à notre tâche

L’étape suivante est la configuration du déclencheur, c’est-à-dire à quelle fréquence mon script s’exécute. Dans mon cas, j’ai décidé de l’exécuter une fois par semaine, le lundi matin à 02h

Dans l’onglet « Actions » du Planificateur de tâches, nous allons configurer l’exécution d’un script PowerShell en spécifiant le chemin vers l’exécutable PowerShell (C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe) suivi du paramètre « -File C:\Script\ESXI-Inventory.ps1 », permettant ainsi de lancer le script d’inventaire des serveurs ESXI

Conclusion
Nous avons vu une méthodologie complète pour l’inventaire des serveurs ESXi à l’aide de l’agent GLPI. Nous avons également proposé une solution d’automatisation grâce à un script PowerShell, planifié de manière hebdomadaire à l’aide d’une tâche planifiée pour simplifier le processus d’inventaire. Chaque étape du script a été expliquée en détail, du nettoyage des anciens fichiers à l’envoi des informations à GLPI.