L’environnement 6.5 prend petit à petit de l’ampleur et je me suis retrouvé avec des VMs à retirer de l’inventaire.

La nouvelle interface web cache un peu l’option et celle-ci n’est pas disponible directement depuis un clic droit donc voici le chemin pour retirer une machine de l’inventaire : Clic droit > All Virtual Infrastructure Actions > More Uncategorized Actions > Remove from Inventory.

Rate this post

J’ai eu besoin d’étendre un disque d’une machine virtuelle Windows 2012, répliqué entre deux sites distants, innocemment je pensais en avoir pour quelques secondes, et j’avoue avoir été surpris de constater que l’agrandissement d’une machine protégée avec vSphere Replication n’est pas du tout « user-friendly ».

Il faut respecter scrupuleusement la KB2042790  Resizing virtual machine disk files that are protected by vSphere Replication using VMware vCenter Site Recovery Manager.

1re étape : renommer le répertoire de destination de la synchronisation afin d’empêcher vSphere Replication de la détruire lorsque nous stopperons la synchronisation.

2e étape : noter les paramètres de la réplication.

3e étape : supprimer ladite réplication : à noter qu’à l’exécution de l’opération plusieurs erreurs apparaissent, car ils ne retrouvent plus les fichiers à supprimer.

4e étape : Augmenter le disque de la VM, lorsqu’il s’agit d’une extension supérieure à 2TB, il faut malheureusement réaliser l’opération à froid en éteignant la VM et avec le vSphere Web Client. cf:  KB2058287  Support for virtual machine disks larger than 2 TB in VMware ESXi 5.5.x and 6.0.x

Ci-dessous le message d’erreur qui est très clair, pas d’augmentation à chaud au-delà de 2TB.

5e étape : on attaque un ESXi ayant accès au stockage du replica afin d’augmenter en ligne de commande avec vmkfstools la taille de son disque autant dire que cette partie nécessiterais clairement une amélioration.

J’avais besoin d’augmenter à 8TB la volumétrie du disque et je confirme que le commutateur [tT] pour tera fonctionne malgré qu’il ne soit pas mentionné dans la doc : vmkfstools—X—extendvirtualdisk newSize [kK|mM|gG] .(source Extending a Virtual Disk)

Pour exemple : vmkfstools -X 8T test-VM.vmdk fonctionne. La commande s’exécute sur le vmdk et non sur le -flat.vmdk.

6e étape : Reconfigurer le nom d’origine du répertoire du replica.

7e étape : Reconfigurer la réplication.

8e étape : Si votre extension été supérieur à 2TB, rallumer la VM.

Rate this post

J’avais besoin pour mon homelab d’un nœud de réplication nutanix, je me suis mis en tête de faire une installation « one node » sur un VMware Workstation, la version actuellement disponible est la 2017.05.22, mais si vous avez déjà fait une installation sur VMware vous savez qu’il est nécessaire d’avoir un fichier de description pour le vmdk.

 

Les descripteurs disponibles sur le net correspondent à une ancienne version de Nutanix, donc voici le fichier qui correspond à la version 2017.05.22 :


# Disk DescriptorFile

version=1

encoding="UTF-8"

CID=fffffffe

parentCID=ffffffff

isNativeSnapshot="no"

createType="vmfs"

# Extent description

RW 14540800 VMFS "ce-2017.05.22-stable-flat.vmdk"

# The Disk Data Base

#DDB

ddb.adapterType = "lsilogic"

ddb.geometry.cylinders = "905"

ddb.geometry.heads = "255"

ddb.geometry.sectors = "63"

ddb.longContentID = "d00bc92d928c5ea1ad1e2ee1fffffffe"

ddb.thinProvisioned = "1"

ddb.uuid = "60 00 C2 93 e0 e7 ce 39-87 57 b1 3f 79 7d 6f 69"

ddb.virtualHWVersion = "10")

Sinon vous pouvez faire comme moi et utiliser cette KB VMware « Recreating a missing virtual machine disk descriptor file (1002511) » pour créer le fichier avec vmkfstools.

Rate this post

Un admin de la platforme VMware m’a remonté un problème de connexion au vCenter, je n’arrivais pas à reproduire le problème mais une rapide recherche sur internet la KB VMware : « vSphere Client will time out before authentication to ESXi is complete (2072539) » nous donnait une explication :

Dans notre cas, c’est le nombre trop important de groupe dont l’utilisateur est membre mais le timeout est personnalisable depuis la clé de registre :

HKCU\Software\VMware\VMware Infrastructure Client\Preferences\CLIENT_CMD_TIMEOUT

Rate this post

Get-VMHost | Sort | Select Name,@{ N= »CurrentPolicy »; E={$_.ExtensionData.config.PowerSystemInfo.CurrentPolicy.ShortName}},@{ N= »CurrentPolicyKey »; E={$_.ExtensionData.config.PowerSystemInfo.CurrentPolicy.Key}},@{ N= »AvailablePolicies »; E={$_.ExtensionData.config.PowerSystemCapability.AvailablePolicy.ShortName}}

 

source MKguy : https://communities.vmware.com/thread/461039

Rate this post

Depuis l’ESXi qui héberge la VM :

net-stats -l

noter le PortNum Correspondant à la VM qui nous intéresse dans notre exemple 67108873.

Pour avoir les statistiques nombre de packet et nombre de drop en émission et réception :

vsish -e get /net/portsets/vSwitch2/ports/67108873

Résumé des réceptions :

vsish -e get /net/portsets/vSwitch2/ports/67108873/vmxnet3/rxSummary

Résumé émissions :

vsish -e get /net/portsets/vSwitch2/ports/67108873/vmxnet3/txSummary

Toutes ces commandes peuvent aider à surveiller les drops de remplissage de « ring buffer » :

Large packet loss at the guest operating system level on the VMXNET3 vNIC in ESXi (2039495) 

Rate this post

 Alors que je me faisais une joie d’avoir un client vSphere « supporté » en HTML5, quelle ne fut pas ma surprise à la connexion sur le VCSA (vCenter Server Appliance) fraîchement upgradé:

Oui, vous avez bien vu, il y a toujours 2 clients, un avec Flash et l’autre en HTML5 mais avec des fonctionnalités partielles.

Je ne m’attendais pas à ça, mais VMware a simplement pris le fling du client HTML5 et collé un tampon supporté dessus !

Pour rappel, les flings sont des outils mis à disposition en mode laboratoire expérimental, ils ne devraient pas être utilisés en production au dire même de VMware, mais c’est une source d’outils très pratiques et communément utilisés par beaucoup d’Admin. Vous pouvez explorer cette caisse à outils ici : Labs VMware Flings

Du coup, j’ai fait quelques recherches sur les différences entre les deux clients, la liste est un peu longue, elle se trouve ici : vSphere 6.5 HTML 5 functionnality support.

Des mises à jour régulières sont promises et elles seront poussées d’abord sur le fling qui lui reste bien sr non supporté…

 

A noter la convention de nommage, le « vSphere Web Client » correspond au client Flash et le « vSphere Client » le HTML5.

 

Lien vers le fling du client html5 à réserver pour vos labs : vsphere-html5-web-client.

 

Rate this post

Nous avions déjà un export automatique vers notre CMDB en place, mais suite à une demande de modification, je me suis dit qu’il était temps de remplacer notre bon vieux get-vm.

Je pensais arriver à un meilleur résultat, mais les requêtes pour le Datacenter et le Cluster ralentissent vraiment l’exécution, malgré ça, l’ancien script prenait 2h55, le nouveau 39min soit presque 4.5 fois plus rapide pour le même scope soit 5 vCenters et un peu plus de 2200VMs.

@"

===============================================================================
Description:   Exports VM Informations to CMDB
Usage:         Schedule task on vCenter
===============================================================================

"@
$StartMs = (Get-Date)
0..1000 | ForEach-Object {$i++}

#Standard PowerCli cmdlets
add-pssnapin VMware.VimAutomation.Core

#Renseigner votre/vos vCenter(s) separé par des virgules
Write-Host "Renseigner votre/vos vCenter(s) separé(s) par des virgules"
$vCenters= Read-Host "VCENTER_NAME"
$Path = Read-Host "Path"

#Date
$Date = Get-Date -Format yyyy-MM-dd

Write-Host "Renseigner le chemin d'export du fichier resultat ainsi que le nom du fichier"
$ExportFilePath = Read-host "$Path\$date\Export-CMDB.csv"

$listVM=@("VMName,VMHostname,Datacenter,Powerstate,OS,IPAddress,MacAddress,NetworkName,ToolsStatus,Cluster,NumCPU,MemMb,Datastore,DiskGB,DiskFree")

 Foreach ($vCenter in $vCenters) {
 Connect-VIServer $vCenter

 $VMs = Get-View -ViewType VirtualMachine
 

 
ForEach ($vm in $VMs) {
      $VMName = $vm.Name
      $VMHostname = $vm.Guest.Hostname
      $parentObj = Get-View $vm.Parent
      #while ($parentObj -isnot [VMware.Vim.Datacenter]) {$parentObj = Get-View $parentObj.Parent | select -Unique}
      while ($parentObj -isnot [VMware.Vim.Datacenter]) {$parentObj = Get-View $parentObj.Parent}
      #Boucle et remonte d'un niveau dans l'arborescence jusqu'à trouver le datacenter
      $Datacenter =   $parentObj.Name
      $Powerstate = $vm.Summary.Runtime.PowerState
      $OS = $vm.config.GuestFullName
      $IPAddress = $vm.Guest.Net.IPAddress
      $MacAddress = $vm.Guest.net.MacAddress
      $NetworkName = $vm.Guest.net.Network
      $ToolsStatus = $vm.Guest.ToolsStatus
      ## use UpdateViewData() to populate the linked view, then access said linked view
      $vm.UpdateViewData("Runtime.Host.Parent.Name")
      $Cluster = $vm.Runtime.LinkedView.Host.LinkedView.Parent.Name
      $NumCPU = $vm.Summary.Config.NumCpu
      $MemMb = $vm.Summary.Config.MemorySizeMB
      $Datastore = $vm.Summary.Config.VmPathName.Split()[0].split('[]')
      #le premier split prend la premiere expression, le deuxieme retire les crochets
      $DiskGB = [Math]::Round((($vm.Guest.Disk | Measure-Object -Property Capacity -Sum).Sum / 1GB),2)
      $DiskFree = [Math]::Round((($vm.Guest.Disk | Measure-Object -Property FreeSpace -Sum).Sum / 1GB),2)
      $listVM+=("$VMName,$VMHostname,$Datacenter,$Powerstate,$OS,$IPAddress,$MacAddress,$NetworkName,$ToolsStatus,$Cluster,$NumCPU,$MemMb,$Datastore,$DiskGB,$DiskFree")
      Write-Host "Traitement de la machine $VMName" -ForegroundColor Yellow
      }
Disconnect-VIServer $Vcenter -Force -Confirm:$false
}

$listVM > $ExportFilePath
Write-Host "Creation du Fichier résultat" -ForegroundColor Red


Write-Host "Déconnection des vCenters" -ForegroundColor Gray
#$VC = Disconnect-VIServer * -Confirm:$False

$EndMs = (Get-Date)
Write-Host "Le script s'est executé en  $($EndMs - $StartMs)"

 

Rate this post

Nous avions un besoin très spécifique et il nous fallait activer le fameux promiscuous mode afin de « sniffer » l’ensemble du trafic réseau sur un cluster, voici les lignes que j’ai utilisé pour nos PortGroups :

Get-Cluster "Cluster-Name" | Get-VMHost | Get-VirtualSwitch -Name "vSwitch_Name" | New-VirtualPortGroup -Name “VM_VLAN_Name” -VLanId 4095
Get-Cluster "Cluster-Name" | Get-VMHost | Get-VirtualPortGroup -name "VM_VLAN_Name" | Get-SecurityPolicy |  Set-SecurityPolicy -AllowPromiscuous $true

Concernant les VMs, elles ont deux interfaces, voici la ligne que j’ai utilisée pour configurer la deuxième sur ce même VLAN:

Get-VM "VM-name" | Get-NetworkAdapter -name "*2" | Set-NetworkAdapter -NetworkName "VM_VLAN_NAME"
Rate this post