Contrairement à un Lab, en prod on retrouve très souvent un grand nombre d'ESXi répartis dans plusieurs cluster.
Cela peut vite devenir contraignant si on doit ajouter des groupes de ports et des VLANs dans un cluster lorsqu'on a pas de licence vCenter Enterprise plus pour déployer des Distributed vSwitch afin de pousser les différents groupes de manière centralisée.
Nous allons voir ici comment utiliser PowerCLI pour effectuer cette manipulation automatiquement à l'aide d'un script.
Pour créer les VLANs, le script fonctionne en récupérant les informations depuis un fichier cvs.
Ce fichier va comprendre plusieurs lignes :
Les informations devront obligatoirement être séparées par une virgule.
Dans cet exemple, un seul VLAN sera déployé.
Pour en déployer d'autres il suffira d'ajouter les informations des autres VLANs sur les lignes suivantes.
Exemple :
Le compte utilisateur doit être un compte ayant des privilèges administrateur sur vCenter.
Ne pas oublier de remplir la variable$csvpath
Voici le script qui sera utilisé pour ajouter un group de ports dans un Virtual Switch Standard sur chacun des ESXi d'un cluster.
Le script sera également utilisé pour définir un ID de VLAN sur ce groupe de ports.
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Ajouter un groupe de ports sur un vSwitch Standard pour tous les ESXi d'un Cluster
. UTILISATION :
- Lancer le script
#>
cls
# Declaration des fonctions
function vcenter-connect{
$VC = Read-Host -Prompt " Entrer le nom de vCenter "
$cred = Get-Credential
Write-Host;
Write-Host -ForegroundColor cyan "Connexion à vCenter. Merci de patienter..."
Connect-VIServer $VC -Credential $cred
Write-Host;
}
function vcenter-disconnect{
Write-Host;
Write-Host -ForegroundColor cyan "Déconnexion de vCenter..."
Disconnect-viserver -Server $Global:DefaultVIServer -Confirm:$false -Force
Write-Host;
}
# Debut du script
vcenter-connect
Write-Host -fore Cyan "
######################################################################################
# Ajouter un groupe de ports sur un vSwitch Standard pour tous les ESXi d'un Cluster #
######################################################################################"
Write-Host;
$csvpath = ""
$vlanlist = Import-Csv -Path $csvpath
$esxi = Get-cluster $vlanlist.clustername | Get-VMHost
foreach ($VMHost in $esxi) {
Write-Host;
Write-host "Traitement en cours de l'ESXi : " -NoNewline ; write-host $VMHost -ForegroundColor Yellow
Write-Host;
foreach ($newvlan in $vlanlist) {
Get-VMHost -name $VMhost | Get-VirtualSwitch -name $newvlan.vswitchname | New-VirtualPortGroup -name $newvlan.VLanName -VLanId $newvlan.VLanId
}
}
Write-Host;
vcenter-disconnect