L'objectif de ce script est de déployer une VM depuis un Template directement dans un Cluster spécifique tout en précisant le datastore qui sera utilisé pour stocker le vmdk.
Pour utiliser ce script il sera impératif d'avoir :
Le script permettra de déployer autant de VMs que l'on souhaite à partir d'autant de Template que l'on veut, avec des noms prédéfinis et dans un Cluster prédéfinis.
Attention : le temps d'exécution du script va dépendre du nombre de VMs à déployer et de leur taille.
Pour créer les VMs, le script fonctionne en récupérant les informations depuis un fichier csv.
Ce fichier va comprendre plusieurs lignes :
Les informations devront obligatoirement être séparer par une virgule.
Dans cet exemple, une seule VM sera déployée, pour en faire d'autres il suffira d'ajouter les informations des autres VMs sur les lignes suivantes.
Name,Datastore,Template,Cluster
nom_de_la_vm1,nom_du_datastore,nom_du_template,nom_du_cluster
nom_de_la_vm2,nom_du_datastore,nom_du_template,nom_du_cluster
nom_de_la_vm2,nom_du_datastore,nom_du_template,nom_du_cluster
Exemple :
Le compte utilisateur doit être un compte ayant des privilèges administrateur sur vCenter.
Ne pas oublier de remplir la variable$csvpath
Le script à utiliser est le suivant :
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Déployer une VM dans un Cluster depuis un Template
. 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 "
######################################################
# Déployer une VM dans un Cluster depuis un Template #
######################################################"
Write-Host;
$csvpath = ""
$newvm = Import-Csv -Path $csvpath
Write-Host;
foreach ($vm in $newvm) {
Write-Host;
Write-host "WARNING Creation en cours de la VM" -NoNewline ; write-host ""$vm.Name"" -ForegroundColor Yellow -NoNewline ; write-host "dans le cluster" -NoNewline ; write-host ""$vm.cluster"" -ForegroundColor Yellow
New-VM -Name $vm.Name -Datastore $vm.Datastore -Template $vm.Template -ResourcePool $vm.Cluster
}
sleep 2
Write-Host;
Write-host " Verification de la creation des VMs dans le cluster " -NoNewline ; write-host $VIServer -ForegroundColor Green
sleep 2
foreach ($vm in $newvm) {
$check = Get-VM -Name $vm.Name
if ($check = $?){
Write-Host;
Write-host "La VM"$vm.Name"a été créé dans le cluster"$vm.cluster"" -ForegroundColor green
}else{
Write-Host;
Write-host " ATTENTION la VM"$vm.Name"n'a pas été créé dans le cluster"$vm.cluster"" -ForegroundColor red
}
}
Write-Host;
vcenter-disconnect
Le résultat sera sous cette forme (la capture d'écran ne correspond pas exactement au script mais le résultat sera similaire) :