Ajouter des cibles iSCSI

Dans certains cas, un serveur peut avoir besoin de joindre de nombreuses cibles iSCSI. Il faut donc toutes les définir, et sur chacun des hosts.
C’est une opération longue, fastidieuse et source d’erreur si on la fait manuellement.

Le script ci-dessous vérifie la configuration de chaque ESXi, et la modifie si nécessaire.
Il indique pour chaque host si ces éléments sont déjà configurés ou s’il doit les modifier.


Variables

Deux variables sont initialisées dans les 2 premières lignes.

$EsxHosts : contient la liste des hosts ESXi à contrôler.
Elle est initialisée par une requête pour lister par exemple un host, les hosts d’un cluster, ou tous les hosts connus du vCenter.

$EsxHosts = Get-VMHost host01.infra.local
$EsxHosts = Get-Cluster | Get-VMHost | Sort-Object -Property Name
$EsxHosts = Get-VMHost | Sort-Object -Property Name

$TargetIPs : contient la liste des adresses iSCSI.
Elle peut contenir une ou plusieurs IPs à ajouter, encadrées individuellement par des guillemets et séparées par une virgule.

$TargetIPs = "10.20.30.10"
$TargetIPs = "10.20.30.10", "10.20.30.11", "10.20.30.12"

Script

$EsxHosts = Get-VMHost | Sort-Object -Property Name
$TargetIPs = "10.20.30.10", "10.20.30.11", "10.20.30.12"
Foreach ($EsxHost in $EsxHosts)
{
   Write-Host $EsxHost.Name -ForegroundColor Red
   $VMHba = $EsxHost | Get-VMHostHba -Type iScsi | Where {$_.Model -eq "iSCSI Software Adapter"}
   Foreach ($TargetIP in $TargetIPs)
   {
      if (Get-IScsiHbaTarget -IScsiHba $VMHba -Type Send | Where {$_.Address -cmatch $TargetIP})
      {
         Write-Host "- The target $TargetIP already exists on $EsxHost." -ForegroundColor Green
      }
      else
      {
         Write-Host "- The target $TargetIP does not exist on $EsxHost. Creating..." -ForegroundColor Yellow
         $Result = New-IScsiHbaTarget -IScsiHba $VMHba -Address $TargetIP
      }
   }
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *