L'objectif de ce script est de créer une liste de VMs directement dans un Cluster spécifique depuis un un fichier .csv.
Les VMs possèderont des configurations correspondantes à ce qui est indiqué dans le fichier .csv.
Attention aucun OS ne sera défini sur la VM, il faudra ajouter un ISO dans la configuration de la VM depuis vCenter pour permettre le déploiement de l'OS au démarrage.
Pour utiliser ce script il sera impératif d'avoir :
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.
VMName,VMHost,Datastore,DiskGB,NumCPU,MemoryGB,DiskStorageFormat,NetworkName,cluster,HardwareVersion
nom_vm1,nom_datastore,taille_hdd,nb,cpu,taille_ram,type_stockage,nom_vlan,nom_cluster,version_compatibilité
nom_vm2,nom_datastore,taille_hdd,nb,cpu,taille_ram,type_stockage,nom_vlan,nom_cluster,version_compatibilité
nom_vm3,nom_datastore,taille_hdd,nb,cpu,taille_ram,type_stockage,nom_vlan,nom_cluster,version_compatibilité
La version dont je parle précédemment correspond en réalité à la version minimale qu'il faudra avoir sur les ESXi pour pouvoir héberger la VM.
Par exemple une VM dont la version minimale de compatibilité est défini sur 6.7 ne pourra pas être hébergée sur un ESXi en version 6.5 ou inférieure.
De la même manière que si la version minimale de compatibilité d'une VM est 7.01, elle ne pourra pas être hébergée sur un ESXi version en 6.x et inférieur.
Voici un tableau récapitulatif :
Products | Virtual Hardware Version |
ESXi 7.0 U2 (7.0.2) Fusion 12.2.x Workstation Pro 16.2.x Workstation Player 16.2.x |
19 |
ESXi 7.0 U1 (7.0.1) Fusion 12.x Workstation Pro 16.x Workstation Player 16.x |
18 |
ESXi 7.0 (7.0.0) | 17 |
Fusion 11.x Workstation Pro 15.x Workstation Player 15.x |
16 |
ESXi 6.7 U2 | 15 |
ESXi 6.7 Fusion 10.x Workstation Pro 14.x Workstation Player 14.x |
14 |
ESXi 6.5 | 13 |
Fusion 8.x Workstation Pro 12.x Workstation Player 12.x |
12 |
ESXi 6.0 Fusion 7.x Workstation 11.x Player 7.x |
11 |
ESXi 5.5 Fusion 6.x Workstation 10.x Player 6.x |
10 |
ESXi 5.1 Fusion 5.x Workstation 9.x Player 5.x |
9 |
ESXi 5.0 Fusion 4.x Workstation 8.x Player 4.x |
8 |
ESXi/ESX 4.x Fusion 3.x Fusion 2.x Workstation 7.x Workstation 6.5.x Player 3.x Server 2.x |
7 |
Workstation 6.0.x | 6 |
ESX 3.x ACE 2.x Fusion 1.x Player 2.x |
4 |
ACE 1.x Lab Manager 2.x Player 1.x Server 1.x Workstation 5.x Workstation 4.x |
3 et 4 |
ESX 2.x GSX Server 3.x |
3 |
Source du tableau : ICI
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 : Création d'une VM
. 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 "
#####################
# Création d'une VM #
#####################"
Write-Host;
$csvpath = ""
$createvm = Import-Csv -Path $csvpath
foreach ($vm in $createvm){
Write-Host " Creation en cours de la VM " -NoNewline; Write-Host $vm.VMName -ForegroundColor green
Write-Host;
New-VM -ResourcePool $vm.cluster -Datastore $vm.Datastore -Name $vm.VMName -NumCPU $vm.NumCPU -MemoryGB $vm.MemoryGB -DiskGB $vm.DiskGB -DiskStorageFormat $vm.DiskStorageFormat -cd -HardwareVersion $vm.HardwareVersion -NetworkName $vm.NetworkName -CpuHotAddEnabled:$true -MemoryHotAddEnabled:$true -Confirm:$false -RunAsync
}
Write-Host;
vcenter-disconnect
La liste des VMs sera alors visible dans le cluster défini dans le fichier .csv