Ce TP intitulé « Lab global Datacenter » a pour but de regrouper et réutiliser les principales fonctionnalités étudiées dans les TP 1 à 7, en mettant l’accent sur la configuration automatisée via PowerCLI.
Les objectifs de ce TP sont les suivants :
- Concevoir et mettre en place un datacenter virtualisé complet.
- Créer et configurer un cluster de virtualisation.
- Ajouter et gérer plusieurs hôtes au sein du cluster.
- Configurer et optimiser le fonctionnement du cluster.
- Déployer, cloner et administrer des machines virtuelles.
- Mettre en œuvre les fonctionnalités avancées telles que la haute disponibilité (HA), le Distributed Resource Scheduler (DRS) et la migration à chaud (vMotion).
- Assurer la sauvegarde des machines virtuelles à l’aide de backups et de snapshots.
- Mettre en place des mécanismes de protection et de sécurisation des machines virtuelles.
- Gérer les ressources de stockage, y compris les datastores et les solutions de stockage distribué comme vSAN.
- Configurer et administrer le réseau virtuel (switchs virtuels, VLANs, segmentation réseau).
- Mettre en place des politiques de gestion des ressources (CPU, RAM, stockage).
- Superviser l’infrastructure afin de garantir la performance et la disponibilité des services.
- Tester les scénarios de tolérance aux pannes et de reprise après incident.
- Optimiser les performances globales du datacenter.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser- Importer les modules
Import-Module -Name VMware.VimAutomation.Storage.psd1
Import-Module -Name VMware.VimAutomation.Storage.psm1
Import-Module -Name "C:\Labfiles\HOL-2530\VMware.VMEncryption.psd1"
Import-Module -Name "C:\Labfiles\HOL-2530\VMware.VMEncryption.psm1"- Se connecter à vSphere
Connect-VIServer -server vcsa-01a.vcf.sddc.lab -user administrator@vsphere.local -password VMware123!- Voir la location > Emplacement
Get-Folder- Création du Datacenter nommé
ESTIAM-Data-01
New-Datacenter -Name "ESTIAM-Data-01" -Location (Get-Folder -Name "Datacenters")- Voir le résultat
Get-Datacenter -Name "ESTIAM-Data-01"- Voir plus de détails
Get-Datacenter -Name "ESTIAM-Data-01" | Format-List *Dans cette partie on va créer 3 clusters qui sont : ESTIAM-Paris, ESTIAM-Lyon & ESTIAM-Geneve et ne pas activer le HA et DRS.
- Cluster ESTIAM-Paris
New-Cluster -Name "ESTIAM-Paris" -Location (Get-Datacenter "ESTIAM-Data-01")- Cluster ESTIAM-Lyon
New-Cluster -Name "ESTIAM-Lyon" -Location (Get-Datacenter "ESTIAM-Data-01")- Cluster ESTIAM-Geneve
New-Cluster -Name "ESTIAM-Geneve" -Location (Get-Datacenter "ESTIAM-Data-01")- Vérification des clusters
Get-Datacenter "ESTIAM-Data-01" | Get-ClusterDans cette partie; on ajoute un hôte au cluster ESTIAM-Paris.
- Ajout ESXi au cluster
ESTIAM-ParisHost 1 :esx-05a.vcf.sddc.lab
Add-VMHost -Name "esx-05a.vcf.sddc.lab" -Location "ESTIAM-Paris" -User "root" -Password "VMware123!"Maintenant que le cluster a été créé et que les hôtes ESXi ont été ajoutés, on passe à l’étape finale du processus. Dans cette phase, on utilise vCenter QuickStart afin de finaliser la configuration du cluster de manière simplifiée et automatisée.
- Vérification du NTP configuré au niveau de l'hôte
Get-VMHost "esx-05a.vcf.sddc.lab" | Get-VMHostNtpServer- Vérification RDMA (réseau avancé)
Get-VMHost "esx-05a.vcf.sddc.lab" | Get-VMHostNetworkAdapter | Select Name, RDMAEnabled- Vérifier Lockdown Mode
Sert à sécuriser l’accès à l’ESXi
- Disabled → accès normal (admin direct possible)
- Normal/Strict → accès limité via vCenter
- sécurité du datacenter
- éviter accès direct non autorisé
- standard en production
Get-VMHost "esx-05a.vcf.sddc.lab" | Select Name, LockdownMode, ConnectionState, PowerState| Vérification | Rôle | Impact |
|---|---|---|
| Lockdown Mode | Sécurité | contrôle accès ESXi |
| NTP | Temps | stabilité cluster |
| EVC | CPU compatibilité | vMotion possible |
| RDMA | Performance réseau | stockage rapide |
Maintenant que notre cluster a été configuré, nous allons passer à l’étape de création d’une image de cluster.
Lors de l’étape précédente, cette configuration avait été volontairement ignorée afin de s’y attarder plus en détail ici.
L’objectif est de créer et d’attacher une image de cluster afin de :
- Garantir une configuration homogène sur tous les hôtes ESXi
- Simplifier la gestion et les mises à jour
- Réduire les écarts de configuration (drift)
Une Cluster Image est un modèle standard qui définit :
- La version d’ESXi
- Les drivers (pilotes)
- Le firmware (si intégré)
- Les add-ons fournisseurs
Tous les hôtes du cluster doivent se conformer à cette image.
- Créer le cluster nommé
ESTIAM-Paris-SDDC - Désactiver HA / DRS / vSAN
- Assurez-vous que l'option «
Gérer tous les hôtes du cluster avec une seule image» est cochée. - Cocher «
Importer une image à partir d'un hôte existant dans l'inventaire vCenter» - Sélectionner l'image concernée
- Récapitulatif
- Vérification
Les vCLS assurent la disponibilité et la continuité des services du cluster, même en cas de défaillance partielle de l’infrastructure.
Les vSphere Cluster Services (vCLS) sont activés par défaut dans tous les clusters vSphere. Ils assurent que les services du cluster restent disponibles même si le vCenter Server est indisponible, garantissant la santé et la disponibilité des workloads. vCenter reste nécessaire pour configurer et exécuter DRS et HA.
Une vCLS VM (vSphere Cluster Services Virtual Machine) est une petite machine virtuelle système déployée automatiquement dans chaque cluster vSphere.
Sa fonction principale est de garantir que les services du cluster—comme DRS (Distributed Resource Scheduler) et HA (High Availability)—restent opérationnels même si le vCenter Server devient indisponible.
- Les vCLS VMs sont créées automatiquement lors de la création d’un cluster.
- Elles ne sont pas destinées à exécuter des workloads utilisateurs, mais gèrent les services du cluster.
- Chaque cluster possède généralement 2 ou 3 vCLS VMs, selon la version de vSphere et le niveau de redondance souhaité.
- Elles permettent à DRS de fonctionner sans vCenter, assurant l’équilibrage des ressources et la santé du cluster.
- Depuis vSphere 8.0 U3, les vCLS VMs sont intégrées (Embedded) et utilisent la technologie vSphere Pods (PodCRX) au lieu de VM complètes avec Photon OS.
- Voir les VMs VCLS du cluster
Get-Cluster "RegionA01-COMP01" | Get-VM | Where-Object {$_.Name -like "vCLS*"} | Select Name, PowerState, VMHostLe datastore vCLS est l’emplacement de stockage où résident les vCLS VMs.
- Les vCLS VMs nécessitent un datastore accessible par tous les hôtes du cluster.
- Il est recommandé d’utiliser un stockage partagé : vSAN, NFS ou VMFS.
- Évitez les datastores locaux, car si l’hôte tombe en panne, la vCLS VM ne pourra pas fonctionner ailleurs.
- Un placement correct du datastore garantit la disponibilité, la résilience et la performance des services du cluster.
- Voir les vCLS Datastore
Get-Cluster "RegionA01-COMP01" | Get-VM |
Where-Object {$_.Name -like "vCLS*"} |
Select Name, VMHost, @{N="Datastore";E={$_.ExtensionData.LayoutEx.File[0].Name}}Créer une VM :
- Nom :
Photon-VM01 - Cluster :
RegionA01-COMP01 - Datastore :
RegionA01-ISCSI01-COMP01 - Réseau :
VM-RegionA01-vDS-COMP - OS :
Linux (Photon OS) - Sans template (VM vide + ISO ensuite)
- Variables
$cluster = Get-Cluster "RegionA01-COMP01"
$ds = Get-Datastore "RegionA01-ISCSI01-COMP01"
$network = Get-VDPortgroup -Name "VM-RegionA01-vDS-COMP"- Création de la VM
New-VM -Name "Photon-VM01" `
-ResourcePool $cluster `
-Datastore $ds `
-NumCPU 2 `
-MemoryGB 4 `
-NetworkName $network.Name `
-GuestId "other3xLinux64Guest"- Ajouter le lecteur CD/DVD à la VM
Get-VM "Photon-VM01" | New-CDDrive- Voir tous les périphériques Cette commande liste tout ce qui est attaché à la VM (contrôleurs, RAM, CPU, disques, lecteurs CD)
(Get-VM "Photon-VM01").ExtensionData.Config.Hardware.Device | Select-Object @{N="DeviceType";E={$_.GetType().Name}}, Key, UnitNumber- Affiche les infos essentielles : CPU, RAM, réseau, IP, hôte ESXi et état de l'alimentation.
Get-VM "Photon-VM01" | Select-Object Name, PowerState, NumCpu, MemoryGB, VMHost, UsedSpaceGB, ProvisionedSpaceGB | Format-List- Voir TOUTES les propriétés
Get-VM "Photon-VM01" | Format-List *- Créer un dossier sur le datastore, puis y transférer l'ISO.
$localPath = "C:\labfiles\HOL-2530\ISO\tiny_micro.iso"
$ds = Get-Datastore "RegionA01-ISCSI01-COMP01"
## Créer le dossier nommé "estiam" et copier l'ISO
Copy-DatastoreItem -Item $localPath -Destination "$($ds.DatastoreBrowserPath)\estiam\" -Force- Vérifier que l'ISO est bien dans le nouveau dossier
Get-ChildItem -Path "$($ds.DatastoreBrowserPath)\estiam\"- Monter l'ISO sur votre VM "Photon-VM01" Maintenant que l'ISO est rangé dans le dossier estiam du datastore, on peut l'attacher à la VM.
$cd = Get-VM "Photon-VM01" | Get-CDDrive
Set-CDDrive -CD $cd -IsoPath "[RegionA01-ISCSI01-COMP01] estiam/tiny_micro.iso" -StartConnected $true -Confirm:$false- vérification pour être sûr que la VM est prête à booter correctement
Get-VM "Photon-VM01" | Get-CDDrive | Select-Object Name, IsoPath, ConnectionState, StartConnected- Démarrer la VM
Start-VM -VM "Photon-VM01"Stop-VM -VM "Photon-VM01" -Kill -Confirm:$false- Créer une Catégorie
New-TagCategory -Name "VM-SDDC" -Description "Tags pour les ressources ESTIAM" -Cardinality SingleNote : -Cardinality Single signifie qu'une VM ne peut avoir qu'un seul tag de cette catégorie à la fois.
- Créer le Tag
# Création du tag spécifique
New-Tag -Name "ESTIAM-Paris-VMs" -Category "VM-SDDC"- Assigner le Tag à la VM
# On récupère la VM et le Tag, puis on les lie
$vm = Get-VM "Photon-VM01"
$tag = Get-Tag -Name "ESTIAM-Paris-VMs"
New-TagAssignment -Entity $vm -Tag $tag- Vérifier l'assignation
Get-TagAssignment -Entity "Photon-VM01"Une fois les VM taguées, vous peut faire des recherches ultra-rapides. Par exemple, pour lister toutes les VM qui font partie du ESTIAM-Paris-VMs, peu importe leur nom.
Get-VM -Tag "ESTIAM-Paris-VMs"- voir la carte réseau de la VM
Get-VM "Photon-VM01" | Get-NetworkAdapter | Select-Object Name, NetworkName, Type, MacAddress, ConnectionState- Pour savoir sur quel réseau vous pouvez brancher la deuxième carte
- Ajout de la 2ème carte réseau On va utiliser le réseau ESXi-RegionA01-vDS-COMP pour cet exemple (puisqu'il est disponible dans ta liste).
# On définit la VM et le réseau cible
$vm = Get-VM "Photon-VM01"
$targetNetwork = "ESXi-RegionA01-vDS-COMP"
# On ajoute la nouvelle carte de type Vmxnet3
New-NetworkAdapter -VM $vm -NetworkName $targetNetwork -Type "Vmxnet3" -StartConnected:$true- Si l’ISO reste attaché, à chaque redémarrage, la VM peut tenter de booter à nouveau depuis le CD/DVD virtuel, ce qui pourrait relancer l’installation.
- Déconnecter l’ISO permet à la VM de démarrer directement sur le disque système.
- Une ISO montée consomme un peu de mémoire et d’E/S sur le datastore.
- La déconnecter allège la charge sur le stockage et le réseau.
- Certaines opérations, comme les snapshots ou les migrations vMotion, peuvent générer des avertissements si un CD/DVD virtuel est encore connecté.
- Déconnecter l’ISO évite les messages d’erreur ou les interruptions.
Get-VM "Photon-VM01" | Get-CDDrive | Set-CDDrive -NoMedia -StartConnected $false -Confirm:$false- Vérification
Get-VM "Photon-VM01" | Get-CDDrive | Select-Object Name, IsoPathUne machine virtuelle existante peut servir de base pour créer d’autres machines virtuelles. Cloner une VM permet de gagner beaucoup de temps lorsqu’il s’agit de déployer plusieurs machines similaires. Plutôt que de créer et configurer chaque VM individuellement, vous pouvez configurer une seule machine virtuelle, installer les logiciels nécessaires, puis la cloner autant de fois que nécessaire.
Le clonage crée une copie identique de ta VM Photon-VM01 vers une nouvelle VM appelée Photon-VM02.
- Création
# On définit la source et la destination
$vmSource = Get-VM "Photon-VM01"
$vmDestName = "Photon-VM02"
$datastore = Get-Datastore "RegionA01-ISCSI01-COMP01"
$vmHost = Get-VMHost "esx-01a.vcf.sddc.lab"
# Lancement du clonage
New-VM -Name $vmDestName -VM $vmSource -Datastore $datastore -VMHost $vmHost- On transforme la VM en modèle (Template)
Get-VM "Photon-VM01" | Set-VM -ToTemplate -Confirm:$false

Get-VM. C'est normal, elle change de statut.
- Vérifier que le Template existe
Get-Template -Name "Photon-VM01"- Déployer une nouvelle VM à partir de ce Template
# 1. On prépare les cibles
$template = Get-Template -Name "Photon-VM01"
$vmHost = Get-VMHost "esx-01a.vcf.sddc.lab"
$datastore = Get-Datastore "RegionA01-ISCSI01-COMP01"
# 2. On déploie
New-VM -Name "Photon-Clone" -Template $template -VMHost $vmHost -Datastore $datastoreIl est important de bien comprendre la nuance pour ton lab :
| Caractéristique | Clone (VM vers VM) | Template (VM vers Modèle) |
|---|---|---|
| État final | Une deuxième VM prête à démarrer | Un modèle (template) non démarrable |
| Utilisation | Copie ponctuelle d’une VM existante | Déploiements massifs et standardisés |
| Modification | Modifiable à tout moment | Nécessite reconversion en VM pour modification |
- Démarrer la VM
Get-VM "Photon-Clone" | Start-VMLa HA vSphere fournit une protection pour les machines virtuelles en regroupant celles-ci et leurs hôtes au sein d’un cluster.
- Les hôtes sont constamment surveillés.
- En cas de panne d’un hôte, ses machines virtuelles sont redémarrées automatiquement sur les autres hôtes disponibles.
Lors de la création d’un cluster vSphere HA :
- Un hôte principal est automatiquement élu.
- Cet hôte communique avec vCenter Server et surveille l’état des machines virtuelles protégées et des hôtes secondaires.
- Il doit détecter différents types de pannes et faire la distinction entre un hôte réellement défaillant et un hôte isolé du réseau.
- Pour ce faire, l’hôte principal utilise les pulsations réseau et les signaux de la banque de données afin de déterminer le type de panne.
NB : vSphere HA fonctionne au niveau de l’hôte, ce qui signifie qu’aucune dépendance à vCenter n’est nécessaire pour que le basculement des machines virtuelles vers d’autres hôtes s’effectue correctement.
- Identifier le Cluster concerné
Get-Cluster$clusterName = "RegionA01-COMP01" # Remplace par ton nom de cluster
Set-Cluster -Cluster $clusterName -HAEnabled $true -Confirm:$false- Configurer les options avancées (Admission Control) L'Admission Control est crucial : il réserve de la RAM et du CPU pour s'assurer que si un hôte tombe, les autres ont assez de place pour accueillir les VM rescapées.
# On configure pour tolérer la panne de 1 hôte (Host failure tolerance)
Set-Cluster -Cluster $clusterName -HAAdmissionControlEnabled $true -HAFailoverLevel 1- Configurer la réponse à l'isolement (Isolation Response)
Si un hôte est vivant mais ne capte plus le réseau, que doit-il faire de ses VM ? Généralement, on choisit de les éteindre pour qu'elles redémarrent sur un hôte qui a du réseau.
Set-Cluster -Cluster $clusterName -HAIsolationResponse PowerOff- Vérifier l'état de santé du HA
Une fois configuré, vSphere va installer des agents
(FDM - Fault Domain Manager)sur chaque ESXi. On peut vérifier si tout est "Green".
Get-Cluster $clusterName | Select-Object Name, HAEnabled, HAFailoverLevel, HAAdmissionControlEnabled- Activer "VM Monitoring" : "Guest not heartbeating"
Si on l'active, vSphere HA va surveiller les VMware Tools à l'intérieur de la VM. Si Windows ou Linux plante
(Blue Screen / Kernel Panic)et que les VMware Tools ne répondent plus, HA va redémarrer la VM automatiquement, même si le serveur ESXi, lui, fonctionne très bien.Pour que cela fonctionne, il faut impérativement que les VMware Tools soient installés et en cours d'exécution dans la VM.
# On crée l'objet de configuration de base
$spec = New-Object VMware.Vim.ClusterConfigSpec
$spec.DasConfig = New-Object VMware.Vim.ClusterDasConfigInfo
# On définit le monitoring sur VM uniquement
$spec.DasConfig.VmMonitoring = "vmMonitoringOnly"
# On applique la configuration au cluster
(Get-Cluster "RegionA01-COMP01").ExtensionData.ReconfigureCluster($spec, $true)- Vérification finale du HA
$cluster = Get-Cluster "RegionA01-COMP01"
$das = $cluster.ExtensionData.Configuration.DasConfig
[PSCustomObject]@{
"HA_Active" = $cluster.HAEnabled
"Monitoring_VM" = $das.VmMonitoring
"Admission_Control" = $cluster.HAAdmissionControlEnabled
"Failover_Level" = $cluster.HAFailoverLevel
"Isolation_Response" = $das.DefaultVmSettings.IsolationResponse
"Datastore_Heartbeat" = $das.Option | Where-Object {$_.Key -eq "das.heartbeatDsPerHost"} | Select -ExpandProperty Value
} | Format-List- Correction erreur
The number of vSphere HA heartbeat datastores for this host is 1, which is less than required: 2C'est un avertissement classique ! vSphere HA préfère avoir deux banques de données (datastores) pour les pulsations (heartbeats). Cela permet de s'assurer que si un datastore tombe en panne, HA peut toujours vérifier si un hôte est "vivant" via le deuxième. - Ignorer l'avertissement
$cluster = Get-Cluster "RegionA01-COMP01"
New-AdvancedSetting -Entity $cluster -Name "das.ignoreInsufficientHbDatastore" -Value "true" -Type "ClusterHA" -Confirm:$false -Force:$true- Forcer le cluster à lire sa nouvelle configuration.
(Get-Cluster "RegionA01-COMP01").ExtensionData.ReconfigureCluster((New-Object VMware.Vim.ClusterConfigSpec), $true)- Activer le DRS en mode "Fully Automated"
$clusterName = "RegionA01-COMP01"
Set-Cluster -Cluster $clusterName -DrsEnabled $true -DrsAutomationLevel "FullyAutomated" -Confirm:$false-
Ajuster le seuil de migration
(Migration Threshold)Le curseur de"Migration Threshold"(de 1 à 5) définit si le DRS est agressif ou conservateur : -
Vérification finale du DRS
$cluster = Get-Cluster "RegionA01-COMP01"
$cluster.ExtensionData.Configuration.DrsConfig | Select-Object Enabled, DefaultVmBehavior, VmotionRateLorsqu'un hôte atteint ou dépasse 80 % d'utilisation du processeur pendant plus de 5 minutes, une alarme d'avertissement est déclenchée et l'hôte passe en mode maintenance.
On crée une alarme qui migrera une machine virtuelle si le temps d'attente du processeur dépasse une moyenne de 8000 ms sur une période de 5 minutes.
- vérification
Get-AlarmDefinition | Where-Object {$_.Name -like "ALM*"} | Select-Object Name, Description, Enabled- voir si ce sont des Hôtes ou des VM et vérifier le seuil de 80% (8000)
Get-AlarmDefinition | Where-Object {$_.Name -like "ALM*"} | Select-Object Name, `
@{N="TargetType"; E={$_.ExtensionData.Info.Expression.Expression[0].Type}}, `
@{N="YellowThreshold"; E={$_.ExtensionData.Info.Expression.Expression[0].Yellow}} | Format-Table -AutoSizeLes partages définissent l'importance relative d'une machine virtuelle (ou d'un pool de ressources). Si une machine virtuelle possède deux fois plus de partages d'une ressource qu'une autre, elle est autorisée à consommer deux fois plus de cette ressource lorsque ces deux machines virtuelles sont en concurrence pour l'accès aux ressources.
Les partages sont généralement définis comme étant de priorité élevée, normale ou faible.
Les limites empêchent une machine virtuelle d'utiliser plus de ressources que la limite définie. Les réservations garantissent une quantité minimale de ressources disponible pour la machine virtuelle.
- Vérification détaillée (CPU & Mémoire) pour core-A
Get-VM "core-A" | Select-Object Name,
@{N="CPU_Shares_Level"; E={$_.ExtensionData.Config.CpuAllocation.Shares.Level}},
@{N="CPU_Reservation_MHz"; E={$_.ExtensionData.Config.CpuAllocation.Reservation}},
@{N="CPU_Limit_MHz"; E={if($_.ExtensionData.Config.CpuAllocation.Limit -eq -1){"Unlimited"}else{$_.ExtensionData.Config.CpuAllocation.Limit}}},
@{N="Mem_Shares_Level"; E={$_.ExtensionData.Config.MemoryAllocation.Shares.Level}},
@{N="Mem_Reservation_MB"; E={$_.ExtensionData.Config.MemoryAllocation.Reservation}},
@{N="Mem_Limit_MB"; E={if($_.ExtensionData.Config.MemoryAllocation.Limit -eq -1){"Unlimited"}else{$_.ExtensionData.Config.MemoryAllocation.Limit}}} |
Format-ListShares Level (Normal) : En cas de surcharge de l'hôte, core-A a la même priorité que n'importe quelle autre VM configurée par défaut. Elle recevra sa part équitable, mais ne sera pas privilégiée.
Limit (Unlimited) : C'est l'idéal. La VM peut consommer autant de ressources physiques que l'hôte peut lui en donner, sans plafond artificiel.
Reservation (0 / Vide) : Il n'y a aucune garantie matérielle. Si l'hôte manque de RAM, core-A pourrait voir ses performances chuter car vSphere ne lui a "bloqué" aucune ressource prioritaire.
- Booster
core-ATransformercore-Aen VM Prioritaire. Nous allons lui donner deux fois plus de poids que les autres(High)et lui garantir un minimum de ressources.
# On reste cohérent avec la taille de la VM (256Mo total)
Get-VM "core-A" | Get-VMResourceConfiguration | Set-VMResourceConfiguration `
-CpuSharesLevel High `
-MemSharesLevel High `
-MemReservationMB 128- Vérification
Get-VM "core-A" | Select-Object Name,
@{N="CPU_Shares"; E={$_.ExtensionData.Config.CpuAllocation.Shares.Level}},
@{N="Mem_Shares"; E={$_.ExtensionData.Config.MemoryAllocation.Shares.Level}},
@{N="Mem_Reservation_MB"; E={$_.ExtensionData.Config.MemoryAllocation.Reservation}},
@{N="Configured_Memory_MB"; E={$_.MemoryMB}} |
Format-Table -AutoSizeCPU_Shares : Doit être passé à High.
Mem_Shares : Doit être passé à High.
Mem_Reservation_MB : Doit afficher 128.
Configured_Memory_MB : on verra ton 256, confirmant que la réservation de 128 est bien valide (car
En passant en High, on double le poids de core-A par rapport aux autres VMs "Normal" en cas de saturation du CPU. Et avec les 128 Mo de réservation, on crée une "bulle de sécurité" : même si l'hôte est en panique de mémoire, il ne touchera jamais à ces 128 Mo appartenant à core-A.
La VM core-A est Prioritaire dans ce cluster.
Les interruptions de service planifiées représentent généralement plus de 80 % des indisponibilités des centres de données. La maintenance matérielle, la migration des serveurs et les mises à jour du firmware nécessitent toutes des interruptions de service pour les serveurs physiques. Afin de minimiser l'impact de ces interruptions, les entreprises sont contraintes de reporter la maintenance jusqu'à des périodes d'indisponibilité difficiles à planifier et peu pratiques.
La fonctionnalité vMotion de vSphere permet aux entreprises de réduire les interruptions de service planifiées, car les charges de travail dans un environnement VMware peuvent être déplacées dynamiquement vers différents serveurs physiques sans interruption de service. Les administrateurs peuvent ainsi effectuer des opérations de maintenance plus rapides et totalement transparentes, sans être obligés de planifier des fenêtres de maintenance inopportunes. Avec vSphere vMotion, les entreprises peuvent :
- Éliminer les interruptions de service liées aux opérations de maintenance courantes.
- Éliminer les fenêtres de maintenance planifiées.
- Effectuer la maintenance à tout moment sans perturber les utilisateurs ni les services. Une autre fonctionnalité de vSphere, Storage vMotion, permet de migrer une machine virtuelle vers différents périphériques de stockage sans interruption de service.
Migrer toutes les machines virtuelles hébergées sur esx-01a.vcf.sddc.lab vers esx-02a.vcf.sddc.lab.
- Désactiver DRS
Pour éviter que le DRS ne tente de replacer les machines ailleurs pendant qu'on les déplaces manuellement, on le passe en mode Manuel (ou on le désactive).
Set-Cluster -Cluster "RegionA01-COMP01" -DrsEnabled $false -Confirm:$false- Inventaire des VMs sur l'hôte source
$source = "esx-01a.vcf.sddc.lab"
Get-VMHost $source | Get-VM | Select-Object Name, PowerState, NumCpu, MemoryGB | Format-Table -AutoSize- Lancement de la migration (vMotion)
$vms = Get-VM -Location "esx-01a.vcf.sddc.lab"
$dest = Get-VMHost "esx-02a.vcf.sddc.lab"
write-host "Début de la migration de $($vms.Count) machines virtuelles..." -ForegroundColor Cyan
$vms | Move-VM -Destination $dest -Confirm:$false- Vérification finale Une fois que PowerCLI a fini de te rendre la main, on vérifie que l'hôte source est bien vide.
Get-VMHost "esx-01a.vcf.sddc.lab" | Select-Object Name, @{N="VM_Count"; E={(Get-VM -Location $_).Count}}- Vérifier le contenu de l'hôte de destination
Get-VMHost "esx-02a.vcf.sddc.lab" | Get-VM | Select-Object Name, PowerState, NumCpu, MemoryGB | Format-Table -AutoSize- Voir où se trouve la VM core-A actuellement
Get-VM "core-A" | Select-Object Name, VMHost, PowerStateVMware propose plusieurs outils pour vous aider à surveiller votre environnement virtuel et à identifier la source des problèmes potentiels et actuels.
- Voir les derniers événements globaux
Get-VIEvent -MaxSamples 20 | Select-Object CreatedTime, UserName, FullFormattedMessage | Format-Table -AutoSize- Monitoring spécifique à un Hôte ou une VM
Get-VIEvent -Entity "esx-02a.vcf.sddc.lab" -MaxSamples 20 | Select-Object CreatedTime, FullFormattedMessage- Surveillance des performances en temps réel
Get-Stat -Entity "core-A" -Stat "cpu.usage.average" -Realtime -MaxSamples 5 | Select-Object Timestamp, Value, Unit- Exporter les logs
Get-VIEvent -MaxSamples 500 | Export-Csv -Path "C:\Users\Administrator\Desktop\vCenter_Logs.csv" -NoTypeInformationUne Compute Policy permet de définir des règles et des contraintes pour les machines virtuelles ou les clusters afin de garantir que les ressources (CPU, mémoire, stockage, etc.) sont utilisées conformément aux bonnes pratiques et aux besoins de l’entreprise.
L'idée est : on met un "badge" (Tag) sur la VM, un autre sur l'Hôte, et on crée une politique qui dit "Les VMs avec ce badge doivent aller sur les Hôtes avec ce badge".
- Créer les Catégories et les Tags
# 1. Créer les catégories
New-TagCategory -Name "AppType" -Description "Type d'application"
New-TagCategory -Name "HostGroup" -Description "Groupement d'hôtes"
# 2. Créer les Tags
$tagVM = New-Tag -Name "Core-App" -Category "AppType"
$tagHost = New-Tag -Name "Production-Hosts" -Category "HostGroup"- Assigner les Tags
On va marquer la VM
core-Aet l'hôteesx-02a.
# 1. On récupère d'abord l'objet Tag et l'objet VM pour être sûr
$tag = Get-Tag -Name "Core-App"
$vm = Get-VM "core-A"
# 2. On crée l'assignation (le lien entre les deux)
New-TagAssignment -Tag $tag -Entity $vm- vérifier que le tag est bien mis ?
Get-TagAssignment -Entity "core-A" | Select-Object Tag, Entity
$cluster.ExtensionData.Configuration.Rule | Select-Object Name, Enabled, Mandatory, @{N="Type"; E={$_.gettype().Name}} | Format-Table -AutoSize- Test
Essaie d'envoyer
core-Avers l'hôte (esx-02a.vcf.sddc.lab).
$vm = Get-VM "core-A"
$destinationInvalide = Get-VMHost "esx-02a.vcf.sddc.lab"
# Cette commande devrait générer une erreur ou un avertissement de compatibilité
Move-VM -VM $vm -Destination $destinationInvalide
02a, alors que ta règle dit : "Doit être sur le groupe 01a". Il a donc stoppé l'opération pour garantir la conformité.
la configuration idéale qu'on veut pour un système.
- version ESXi
- configuration réseau
- drivers
- firmware
- paramètres cluster
- et vSphere s’assure que tous les hôtes respectent exactement cet état
Une fois l’état souhaité appliqué, vérifiez la compliance des hôtes :
- Compliant : l’hôte respecte l’état souhaité
- Non Compliant : l’hôte dévie de l’état souhaité
Utiliser vSphere Client pour obtenir un rapport clair sur l’état des hôtes.
- Configuration Drift : déviation ou écart de la configuration d’un hôte par rapport à l’état souhaité.
- Causes fréquentes :
- Mise à jour manuelle d’un hôte
- Modification de paramètres réseau ou stockage
- Installation de drivers non standard
Pour bien tester le Desired State changeaons l'ip NTP de l'hôte 1.
- Afficher la configuration NTP actuelle
$host1 = Get-VMHost "esx-01a.vcf.sddc.lab"
Get-VMHostNtpServer -VMHost $host1- Changer l'IP NTP pour créer le Drift
# Supprimer les serveurs NTP existants pour cet hôte
$oldNtp = Get-VMHostNtpServer -VMHost $host1
Remove-VMHostNtpServer -VMHost $host1 -NtpServer $oldNtp
# Ajouter l'IP erronée
Add-VMHostNtpServer -VMHost $host1 -NtpServer "192.168.1.1"
# Redémarrer le service NTP pour appliquer le changement
Get-VMHostService -VMHost $host1 | Where-Object {$_.Key -eq "ntpd"} | Restart-VMHostService -Confirm:$false- Après qu’un drift se produit, les hôtes affectés seront marqués Non Compliant.
- Vérifiez les rapports pour identifier quels hôtes sont affectés et quelles modifications ont été détectées.
- Desired State a détecté un hôte non conforme.
- Sélectionnez l'hôte non conforme, `esx.01a.vcf.sddc.lab`
- il semble que la valeur de NTP soit differente de celle attendue par nos autres hotes du cluster.
- L'ip du NTP à été moédifé
Le Retreat Mode est une fonctionnalité qui permet de placer tous les hôtes d’un cluster en mode maintenance simultanément.
Cela est utile pour effectuer des opérations de maintenance à grande échelle, comme les mises à jour, les migrations de workloads ou la vérification des configurations.
$cluster = Get-Cluster "RegionA01-COMP01"
# On récupère l'ID interne du cluster (ex: domain-c8)
$clusterId = $cluster.ExtensionData.MoRef.Value
# On définit le nom du paramètre spécifique
$settingName = "config.vcls.clusters.$clusterId.enabled"
# On applique le mode Retreat (False = Désactivé)
Get-AdvancedSetting -Entity $global:DefaultVIServer -Name $settingName | Set-AdvancedSetting -Value $False -Confirm:$false- Repasser en mode
"System Managed"
$cluster = Get-Cluster "RegionA01-COMP01"
$clusterId = $cluster.ExtensionData.MoRef.Value
$settingName = "config.vcls.clusters.$clusterId.enabled"
# On repasse la valeur à True pour réactiver les services
Get-AdvancedSetting -Entity $global:DefaultVIServer -Name $settingName | Set-AdvancedSetting -Value $True -Confirm:$false
Write-Host "Le mode System Managed a été réactivé. vCenter va redéployer les VMs vCLS..." -ForegroundColor CyanCette action permet de configurer et ajouter des connexions réseau pour les hôtes ESXi ou les machines virtuelles, incluant la création de commutateurs virtuels (vSwitch) et la gestion des adaptateurs réseau.
Nous allons créer un nouveau commutateur virtuel et y ajouter un groupe de ports (Port Group) pour le trafic des machines virtuelles.
- Créer un nouveau vSwitch (vSwitch1)
Nous allons d'abord créer un nouveau commutateur virtuel indépendant du
vSwitch0(qui gère généralement le Management).
$esxi = Get-VMHost "esx-01a.vcf.sddc.lab"
# Créer le vSwitch sans adaptateur physique pour l'instant (Internal only)
New-VirtualSwitch -VMHost $esxi -Name "vSwitch1" -NumPorts 120- Ajouter un Port Group (Réseau VM)
Un vSwitch seul ne sert à rien sans un groupe de ports pour y connecter des objets. Créons un réseau nommé
"Production-Net".
# Ajouter le groupe de ports au vSwitch
New-VirtualPortGroup -VirtualSwitch (Get-VirtualSwitch -VMHost $esxi -Name "vSwitch1") -Name "Production-Net" -VLanId 10- Identifier les cartes réseau physiques libres
$esxi = Get-VMHost "esx-01a.vcf.sddc.lab"
# Lister les cartes physiques et le switch auquel elles sont liées
$esxi | Get-VMHostNetworkAdapter -Physical | Select-Object Name, DeviceName, VirtualSwitch, LinkSpeedMb, Status | Format-Table -AutoSize- Assigner une carte réseau physique
(Uplink)Pour que ce réseau sorte de l'hôte ESXi vers le monde physique, il faut lui assigner une carte réseau(vmnic).
# On récupère l'adaptateur physique vmnic1
$nic = Get-VMHostNetworkAdapter -VMHost $esxi -Name "vmnic1"
# On l'ajoute au vSwitch1
Add-VirtualSwitchPhysicalNetworkAdapter -VirtualSwitch $vSwitch1 -VMHostPhysicalNic $nic -Confirm:$false- Vérification
$vSwitch1 | Select-Object Name, Nic- Le Standard Switch: vSwitch1 est bien actif.
- Le Port Group "Production-Net" (VLAN 10) est créé.
- L'adaptateur physique vmnic1 est bien rattaché en tant qu'Uplink avec une vitesse de 10000 Full (10 Gbps).
Puisque le commutateur est prêt, nous allons maintenant y brancher une machine virtuelle pour valider que le trafic peut passer.
Nous allons utiliser la VM core-A.
- Basculer son interface réseau sur le nouveau port group
# On récupère l'adaptateur réseau de la VM core-A
$vm = Get-VM "core-A"
$nic = Get-NetworkAdapter -VM $vm
# On la connecte au nouveau Port Group "Production-Net"
Set-NetworkAdapter -NetworkAdapter $nic -PortGroup "Production-Net" -Confirm:$false- vérifie que l'adaptateur est bien
Connected
Get-NetworkAdapter -VM "core-A" | Select-Object Parent, NetworkName, ConnectionStatevSphere Distributed Switch (vDS) est l'étape logique pour centraliser ta gestion réseau. Contrairement au Standard Switch, le vDS se configure au niveau du Datacenter et s'applique uniformément à tous les hôtes du cluster.
- Créer le vSphere Distributed Switch
Nous allons créer un vDS nommé
RegionA01-vDS-PROD
$datacenter = Get-Datacenter "RegionA01"
# Création du switch distribué
New-VDSwitch -Name "RegionA01-vDS-PROD" -Location $datacenter -NumUplinkPorts 2- Créer les Port Groups avec VLANs C'est ici que nous segmentons le trafic. Nous allons créer deux réseaux distincts sur ce même switch.
$vds = Get-VDSwitch -Name "RegionA01-vDS-PROD"
# Port Group pour la Production (VLAN 20)
New-VDPortgroup -VDSwitch $vds -Name "vDS-Prod-Net" -VLanId 20
# Port Group pour le Backup (VLAN 30)
New-VDPortgroup -VDSwitch $vds -Name "vDS-Backup-Net" -VLanId 30- Ajouter les hôtes au vDS
Le
switchexiste dans le vCenter, mais il doit être "étendu" sur les hôtes physiques pour être utilisable. Nous allons utiliser lavmnic1de chaque hôte (celle qui est libre).
$hosts = Get-Cluster "RegionA01-COMP01" | Get-VMHost
$vds = Get-VDSwitch -Name "RegionA01-vDS-PROD"
foreach ($esxi in $hosts) {
Write-Host "Traitement de l'hôte : $($esxi.Name)" -ForegroundColor Cyan
# ÉTAPE A : Ajouter l'hôte au vDS (obligatoire avant de manipuler les nics)
Write-Host " -> Ajout de l'hôte au vDS..."
Add-VDSwitchVMHost -VDSwitch $vds -VMHost $esxi -Confirm:$false
# ÉTAPE B : Récupérer et lier la vmnic1
$nic = Get-VMHostNetworkAdapter -VMHost $esxi -Name "vmnic1"
Write-Host " -> Liaison de la vmnic1..."
Add-VDSwitchPhysicalNetworkAdapter -DistributedSwitch $vds -VMHostPhysicalNic $nic -Confirm:$false
}- Vérification
Get-VDSwitch -Name "RegionA01-vDS-PROD" | Get-VMHost | Select-Object NameLe but est de déplacer l'interface vmk0 (Management) du vSwitch0 vers un nouveau Port Group distribué sur notre vDS-PROD.
- Créer le Port Group pour le Management D'abord, il nous faut une "cible" sur le switch distribué pour accueillir le trafic de gestion.
$vds = Get-VDSwitch -Name "RegionA01-vDS-PROD"
# Créer un Port Group dédié au Management (souvent VLAN 0 ou le VLAN de gestion)
New-VDPortgroup -VDSwitch $vds -Name "vDS-MGMT-Net" -VLanId 0- Migrer l'interface VMkernel
(vmk0)Nous allons dire à l'hôte : "Prends ton IP de gestion et bascule-la sur le switch distribué".
foreach ($esxi in $hosts) {
Write-Host "Migration du Management pour : $($esxi.Name)" -ForegroundColor Yellow
# 1. Récupérer l'interface de management actuelle (vmk0)
$vmk = Get-VMHostNetworkAdapter -VMHost $esxi -Name "vmk0"
# 2. Récupérer le nouveau port group cible
$targetPortGroup = Get-VDPortgroup -Name "vDS-MGMT-Net"
# 3. Basculer l'interface
Set-VMHostNetworkAdapter -VirtualNic $vmk -PortGroup $targetPortGroup -Confirm:$false
}
(vmk0) ont bien conservé leurs adresses IP respectives (10.0.0.51, .52, .53) tout en migrant vers le nouveau Port Group distribué.


- Vérification
Get-VMHostNetworkAdapter -VMHost $hosts -Name "vmk0" | Select-Object VMHost, Name, PortGroupName, IPMaintenant que le Management est sur le vDS, le vSwitch0 (Standard) est probablement vide ou ne contient plus que des choses secondaires; une fois qu'on a migré tous les VMkernels et les VMs vers le vDS, on finit par supprimer le switch standard pour ne pas laisser de configuration "fantôme".
- Vérifions d'abord ce qu'il reste comme switches standards sur tes hôtes
Get-VirtualSwitch -VMHost $hosts | Where-Object { $_.gettype().Name -eq "VirtualSwitchImpl" } | Select-Object VMHost, Name, Nic- Déplacer les VMs vers le vDS
Nous allons chercher toutes les VMs connectées à Production-Net et les basculer sur
vDS-Prod-Net
# Trouver les VMs sur l'ancien réseau et les basculer
Get-VM | Get-NetworkAdapter | Where-Object {$_.NetworkName -eq "Production-Net"} | Set-NetworkAdapter -PortGroup (Get-VDPortgroup -Name "vDS-Prod-Net") -Confirm:$false- Supprimer le Port Group et le vSwitch
# Suppression du Port Group
Get-VirtualPortGroup -VMHost "esx-01a.vcf.sddc.lab" -Name "Production-Net" | Remove-VirtualPortGroup -Confirm:$false
# Suppression du vSwitch1
Get-VirtualSwitch -VMHost "esx-01a.vcf.sddc.lab" -Name "vSwitch1" | Remove-VirtualSwitch -Confirm:$false- Lier les cartes aux Uplinks
Nous allons forcer l'association des cartes physiques aux ports d'Uplink du vDS pour les 3 hôtes.
- Augmenter le nombre d'Uplinks du vDS On va passer le nombre d'Uplinks à 2 (ou plus) pour permettre la redondance.
$vds = Get-VDSwitch -Name "RegionA01-vDS-PROD"
# On monte à 2 Uplinks pour autoriser vmnic0 et vmnic1
Set-VDSwitch -VDSwitch $vds -NumUplinkPorts 2 -Confirm:$false- Activer la Redondance
Une fois vmnic1 libérée sur
esx-01a,on ajoute les deux cartes(vmnic0 et vmnic1)au vDS pour tous les hôtes.
$vds = Get-VDSwitch -Name "RegionA01-vDS-PROD"
$hosts = Get-Cluster "RegionA01-COMP01" | Get-VMHost
foreach ($esxi in $hosts) {
$nics = Get-VMHostNetworkAdapter -VMHost $esxi | Where-Object { $_.Name -match "vmnic[0-1]" }
Add-VDSwitchPhysicalNetworkAdapter -DistributedSwitch $vds -VMHostPhysicalNic $nics -Confirm:$false -ErrorAction SilentlyContinue
}- Activer HA et DRS
$cluster = Get-Cluster -Name "RegionA01-COMP01"
Write-Host "Activation de HA et DRS sur $($cluster.Name)..." -ForegroundColor Cyan
Set-Cluster -Cluster $cluster `
-DrsEnabled $true `
-DrsAutomationLevel "FullyAutomated" `
-HAEnabled $true `
-HAAdmissionControlEnabled $true `
-Confirm:$false- Activer le Health Check
Le vSphere DLDS Health Check est un filet de sécurité génial : il vérifie en temps réel s'il y a des erreurs de configuration sur tes VLANs, le MTU (pour le Jumbo Frames) ou le Teaming.
- Ajout hôte
# 1. On récupère l'objet Datacenter
$datacenter = Get-Datacenter -Name "RegionA01"
# 2. On ajoute l'hôte avec son IP réelle
Add-VMHost -Name "10.0.0.53" -Location $datacenter -User "root" -Password "VMware123!" -Force -Confirm:$false- Mode maintenance
Set-VMHost -VMHost "10.0.0.53" -State "Maintenance"- Montage du Datastore NFS sur l'hôte 3
$h3 = Get-VMHost -Name "10.0.0.53"
Write-Host "Montage du datastore ds-nfs02 sur l'hôte 3..." -ForegroundColor Cyan
New-Datastore -VMHost $h3 -Name "ds-nfs02" -Nfs -NfsHost "10.10.20.60" -Path "/mnt/NFS02" -ReadOnly:$false- Créer un datastore iSCSI vSphere
- Monter un datastore NFS sur un nouvel hôte – Assistant
Dans cette étape, nous utilisons l’assistant pour monter un datastore NFS (
ds-nfs01 datastore) sur un nouvel hôte ESXi.
Cela permet de connecter l’hôte à un stockage réseau distant (serveur NFS) afin qu’il puisse accéder aux machines virtuelles et aux fichiers partagés déjà existants.
New-Datastore -VMHost $h3 -Name "ds-nfs01" -Nfs -NfsHost "10.10.20.60" -Path "/mnt/NFS01" -ReadOnly:$false- Ajouter un serveur SendTarget"
Cette option permet à un hôte ESXi de spécifier un serveur iSCSI cible pour découvrir automatiquement les LUNs disponibles sur ce serveur.
- Relancer l’analyse de l’adaptateur de stockage iSCSI
Cette opération permet à l’hôte ESXi de rechercher de nouveaux LUNs ou modifications sur la cible iSCSI après l’ajout ou la modification d’une cible.
- Déplacer dans le cluster Cette action consiste à intégrer un hôte ESXi existant dan# Vérifier l'état du service SSH sur tous les hôtes Get-VMHost | Get-VMHostService | Where-Object {$_.Key -eq "TSM-SSH"}
Get-VMHost | Get-VMHostService | Where-Object {$.Key -eq "TSM-SSH"} | Set-VMHostService -Policy Off Get-VMHost | Get-VMHostService | Where-Object {$.Key -eq "TSM-SSH"} | Stop-VMHostService -Confirm:$false
Get-VMHost | Get-VMHostService | Where-Object {$.Key -eq "TSM-SSH"} | Set-VMHostService -Policy On Get-VMHost | Get-VMHostService | Where-Object {$.Key -eq "TSM-SSH"} | Start-VMHostService -Confirm:$falses un cluster, afin qu’il puisse participer aux fonctionnalités partagées comme vMotion, HA et DRS.
$h3 = Get-VMHost -Name "10.0.0.53"
$cluster = Get-Cluster -Name "RegionA01-COMP01"
# Déplacement de l'hôte dans le cluster
Move-VMHost -VMHost $h3 -Destination $cluster -Confirm:$false- Migration de la VM (TinyLinux)
# Déplacer le stockage de TinyLinux vers le datastore NFS
Move-VM -VM "TinyLinux" -Datastore "ds-nfs01" -RunAsync- Ajouter un nouveau disque virtuel à une machine virtuelle existante (5 GB)
# 1. Sélectionner la VM
$vm = Get-VM -Name "TinyLinux"
# 2. Ajouter le nouveau disque
# On spécifie Thin pour économiser l'espace du lab
New-HardDisk -VM $vm -CapacityGB 5 -StorageFormat Thin -Persistence Persistent
Write-Host "Le disque de 5 GB a été ajouté avec succès à $($vm.Name)" -ForegroundColor Green- Vérification
Get-VM -Name "TinyLinux" | Get-HardDisk | Select-Object Name, CapacityGB, StorageFormat- Étendre le disque original de la machine virtuelle pour augmenter sa capacité
# 1. On récupère le premier disque de la VM
$vm = Get-VM -Name "TinyLinux"
$disk = Get-HardDisk -VM $vm | Where-Object {$_.Name -eq "Hard disk 1"}
# 2. On modifie la capacité vers 32 GB
Set-HardDisk -HardDisk $disk -CapacityGB 32 -Confirm:$false
Write-Host "Le disque 1 de $($vm.Name) est passé de 30 GB à 32 GB." -ForegroundColor Green- Créer 1 Snapshot
# 1. Identifier la VM
$vmWin = Get-VM -Name "Windows10"
Write-Host "Création du snapshot pour $($vmWin.Name)..." -ForegroundColor Cyan
# 2. Créer le snapshot
# On inclut la mémoire pour pouvoir revenir à l'état "Allumé" exactement là où on était
New-Snapshot -VM $vmWin -Name "Snapshot_Avant_Modif" -Description "Snapshot de sécurité fait pendant le TP" -Memory -Quiesce# 1. Éteindre la VM proprement (Guest OS)
Stop-VMGuest -VM $vmWin -Confirm:$false
# 2. Changer la RAM à 4 GB maintenant qu'elle est hors ligne
Set-VM -VM $vmWin -MemoryGB 4 -Confirm:$false
# 3. Rallumer la VM
Start-VM -VM $vmWin -Confirm:$false
- Restauration Une fois les 4 GB, on teste la restauration pour revenir à tes 2 GB (l'état du snapshot)
# Restaurer le snapshot pour annuler la modif de RAM
$snap = Get-Snapshot -VM $vmWin | Sort-Object Created -Descending | Select-Object -First 1
Set-VM -VM $vmWin -Snapshot $snap -Confirm:$false- Service SSH
# Vérifier l'état du service SSH sur tous les hôtes
Get-VMHost | Get-VMHostService | Where-Object {$_.Key -eq "TSM-SSH"}
# Désactiver et arrêter le SSH (Hardening)
Get-VMHost | Get-VMHostService | Where-Object {$_.Key -eq "TSM-SSH"} | Set-VMHostService -Policy Off
Get-VMHost | Get-VMHostService | Where-Object {$_.Key -eq "TSM-SSH"} | Stop-VMHostService -Confirm:$false
# Réactiver et démarrer le SSH
Get-VMHost | Get-VMHostService | Where-Object {$_.Key -eq "TSM-SSH"} | Set-VMHostService -Policy On
Get-VMHost | Get-VMHostService | Where-Object {$_.Key -eq "TSM-SSH"} | Start-VMHostService -Confirm:$false- Charger le module de sécurité
Import-Module VMware.VimAutomation.Security
# Vérification
Get-Command -Module VMware.VimAutomation.Security- Configuration du Native Key Provider (NKP)
Avant de chiffrer, vCenter doit avoir un fournisseur de clés actif.
- Arrêt de la VM core-A Pour appliquer une politique de chiffrement, la VM doit être hors tension car vSphere doit modifier le format des fichiers sur le disque.
Stop-VMGuest -VM "core-A" -Confirm:$false- Afficher l'état de chiffrement des VMs
Remarque : aucune des Vms listées n'est actuellement chiffré.
- Supprimer les Snapshots
Supprimer les snapshot avant le chiffrement.
- Chiffrer la Vm
Core-A - Vérifier si le chiffrement est bien passé
- Voir la stratégie de stockage de la VM chiffré
- Déchiffrer la VM
Core-A - Vérification > Déchiffrement
- Pour savoir par quel serveur KMS les machines virtuelles chiffrées ont été chiffrées
- Pour voir quel cluster KMS est celui par defaut
- Affiche le cluster KMS actuel
Get-KmsCluster- Définit un nouveau cluster KMS
Set-DefaultKmsCluster -KmsCluster "Nouveau_Nom_Cluster_KMS"- Confirme le nouveau KMS
Get-KmsCluster- Définit un nouveau cluster KMS par défaut
Set-DefaultKmsCluster -KmsCluster "Nouveau_Nom_Cluster_KMS"- Supprime un cluster KMS existant
Remove-KmsCluster -KmsCluster "Nom_Cluster_KMS"- Ajoute un cluster KMS à vCenter
Add-KmsCluster -Name "Nom_Cluster_KMS" -Server "Adresse_KMS"- Active le chiffrement d’une machine virtuelle
Get-VM -Name "VM-Name" | Enable-VMEncryption- Désactive le chiffrement d’une machine virtuelle
Get-VM -Name "VM-Name" | Disable-VMEncryption- Affiche si une VM est chiffrée ou non
Get-VM -Name "VM-Name" | Select Name,EncryptionEnabledTPM (Trusted Platform Module) : puce physique sur un ordinateur qui stocke en toute sécurité les clés de chiffrement et garantit l’intégrité du système. vTPM : module TPM émulé dans une machine virtuelle pour fournir les mêmes fonctions de sécurité qu’un TPM physique.
Le vTPM permet de :
- Stocker de manière sécurisée les clés de chiffrement des VM
- Utiliser BitLocker ou d’autres solutions de chiffrement dans la VM
- Vérifier l’intégrité de la VM (protection contre le démarrage non autorisé)
- Fonctionner avec le chiffrement des machines virtuelles vSphere
vCenter Server peut interagir avec Active Directory, LDAP, et dispose de son propre annuaire pour l'authentification unique (SSO) vSphere.
- AD FS : Windows Server 2016 R2 ou version ultérieure
- AD FS doit être connecté à Active Directory
- Un groupe d'applications pour vCenter Server doit être créé
- Un certificat de serveur AD FS (ou certificat CA/intermédiaire ayant signé le certificat de serveur AD FS) doit être ajouté au magasin de certificats racines de confiance
- Un groupe
vCenter Server Administratorsdans AD FS doit inclure les utilisateurs à qui vous souhaitez accorder des privilèges d’administrateur vCenter Server
- vSphere 7.0 ou version ultérieure
- vCenter doit pouvoir se connecter au point de terminaison de découverte AD FS
- Privilège nécessaire : VcldentityProviders.Manage
- Se connecter
- Ajouter un certificat racine de confiance
- Importer le certficat
- Remplacer le fournisseur d'identité par défaut par Microsoft AD FS
- Voir les prérequis
- Tester l'éligibilité
- Accepter les conditions
- Remplir les informations relative au groupe d'applications AD FS
- Ajout du group AD + Ajouter l'utilisateur
holdev - Se déconnecte de Vcenter et se reconnecter ave ce nouveau utilisateur ajouté
- Désactiver le AD FS et rétablir celui de vCenter
Créer un utilisateur, lui attribuer le rôle de cryptographie, puis se connecter en tant que cet utilisateur et lui attribuer le rôle d’administrateur.



- Attribuer le rôle de Cryptographie à l'utilisateur
estiam
# 1. On récupère le rôle par son nom exact
$role = Get-VIRole -Name "NoCryptoAdmin"
# 2. On l'assigne à estiam sur la racine (Datacenters)
New-VIPermission -Entity (Get-Folder -Name "Datacenters") -Principal "vsphere.local\estiam" -Role $role -Propagate $true
Write-Host "L'utilisateur estiam a maintenant le rôle NoCryptoAdmin." -ForegroundColor Cyan
- Se connecter en tant que
estiam
# Déconnecte tout proprement
Disconnect-VIServer * -Confirm:$false
# Teste la connexion avec le nom complet
$vc = "vcsa-01a.vcf.sddc.lab"
Connect-VIServer -server vcsa-01a.vcf.sddc.lab -user estiam@vsphere.local -password VMware123!- VBS (Virtualization-Based Security) utilise la virtualisation pour isoler les composants critiques du système d’exploitation.
- Crée une enclave sécurisée pour protéger :
- Clés de chiffrement
- Informations d’identification
- Processus critiques
- Permet aux VM Windows 10/11 et Windows Server de bénéficier de fonctionnalités avancées :
- Credential Guard : protection des mots de passe et jetons
- Device Guard : renforcement de la sécurité des applications
- Fonctionne en combinaison avec le vTPM et le chiffrement des VM pour sécuriser les données sensibles.
Pour activer VBS dans une VM vSphere :
- La VM doit utiliser UEFI avec Secure Boot
- Activer le vTPM dans la VM
- Activer VBS depuis les paramètres Windows de la VM
- Secure Boot est une fonctionnalité de UEFI (Unified Extensible Firmware Interface).
- Son rôle est de vérifier l’intégrité du système au démarrage pour s’assurer que seuls les logiciels et systèmes d’exploitation approuvés puissent s’exécuter.
- Cela empêche le chargement de malwares ou rootkits avant que le système d’exploitation ne démarre.
- Le firmware UEFI contient une liste de signatures approuvées (certificats).
- Au démarrage, chaque composant critique (bootloader, noyau OS) est vérifié par rapport à cette liste.
- Si une signature est valide → le système démarre normalement.
- Si une signature n’est pas reconnue → le démarrage est bloqué.
- Se connecter
- Eteindre la VM
Win10 - Modifier les paramètres de cette VM
- Activier le secure boot
- Redémarrer la VM
- Voir la liste des VMs
- Au niveau des colonnes > Voir TPM & VBS
- Se connecter à la VM et lancer PowerShell
- Définir la politique d'éxécution des scripts dans PowerShell
- Lancer le script > TPM
Dans cette partie, nous allons :
- Copier un fichier ZIP d’installation vSphere (VIB) non signé dans le répertoire de l’hôte ESXi (esx-04b) afin de préparer son installation
- Nous connecter ensuite à l’hôte ESXi pour exécuter la commande d’installation du VIB non signé
-
Eteindre et désactiver le secure boot au niveau de la machine
esx-04b -
Copier le fichier VIB (vSphere Installation Bundle) non signé sur la machine virtuelle
esx-04b; nous utiliserons l'application WinSCP pour ce faire. -
Nous allons maintenant utiliser Putty pour nous connecter à l'hôte virtuel et exécuter les commandes permettant d'installer le package d'installation vSphere (VIB) non signé.
Avant de mettre le serveur sous tension, il est nécessaire d'activer le démarrage sécurisé dans ses paramètres. Pour un serveur physique classique, cette activation se fait dans le BIOS. L'emplacement et le paramètre exacts dans le BIOS varient généralement d'un fournisseur à l'autre.
Une fois le démarrage terminé, nous verrons apparaître l' écran rose de la mort (PSOD) indiquant l'état suivant : Échec de la validation des niveaux d'acceptation : Niveau d'acceptation attendu (partenaire) trouvé (communauté). Remarque : Ce comportement est normal, car nous avons précédemment installé un package d'installation vSphere (VIB) non signé sur l'hôte. L'activation du démarrage sécurisé vérifie la présence de packages d'installation vSphere (VIB) non signés et empêche le démarrage complet de l'hôte le cas échéant. Seuls les packages d'installation vSphere (VIB) signés sont autorisés à démarrer.
- Modifier les paramètres de la VM
- Activer le secure boot
- Redémarrer la VM
- Maintenant pour que la Vm fonctionne à nouveau : désactive rle secure boot
On remarque bien que la VM a démarré avec succès.
- Supprimer le Zip maintenant via une connexion PuTTY
esxcli software vib remove -n net-tulip
















































































































































































































































































































































































































