VMWare Extras et Astuces

Installer et utiliser vDiagram

vDiagram est particulièrement utile afin de produire des schémas Visio d'une infrastructure virtuelle. Il permet de générer ce genre de schéma

Pré-requis

  • Environnement de travail Windows
  • Visio (dans mon cas sur une version 2013 mais je l'ai aussi testé et c'est aussi fonctionnel sur 2007, donc trés probablement sur 2010 aussi…)
  • Script powershell vDiagram.ps1 et My-VI-Shapes.vss

Préparation

Installer VMware-PowerCLI-5.5.0-1295336.exe

Par défaut Powershell n'autorise pas les scripts “non-signés” en provenance d'Internet, il faut donc commencer par ouvrir une invite powershell en administrateur, puis pour voir l'état justement d’autorisation des scripts

Get-ExecutionPolicy -List

Dans mon cas, n'ayant jamais configuré ces autorisations j'ai ceci en retour

Pour autoriser tous les scripts, on peut (comme nous le suggère le setup de VMware-PowerCLI) utiliser la commande

Set-ExecutionPolicy RemoteSigned

Comme on peut le voir sur le screenshot ci dessus, la commande Set-ExecutionPolicy demande confirmation et Get-ExecutionPolicy permet de vérifier le changement de configuration.

Execution du script vDiagram pour générer le schéma Visio

Lancer une invite de commande “PowerCLI” en tant qu'administrateur, puis activer la connexion à un serveur vCenter SANS vérification du certificat serveur grâce à la commande PowerCLI

Set-PowerCLIConfiguration -InvalidCertificateAction ignore -confirm:$false

Ensuite on lance le script avec :

.\vDiagram.ps1

Si tout se passe bien le script va demandé : IP du serveur et Login/pwd pour s'y connecter

Et devrait ensuite ouvrir Visio, et générer ce type de schéma

Debug/Diagnostic du script

En cas de problème avec le script vDiagram.ps1, pensez à vérifier :

Tuer une VM " fantome/ inacessible / orpheline "

Dans le contexte où la VM n'est plus dans l'inventaire et que les fichiers ont déjà essayé d'être supprimer.

Sur un hôte ESXi connecté en SSH

lsof | grep Nom_de_la_VM

Cela devrait retourner quelques choses comme cela

Dans mon cas de figure, je veux supprimer les fichiers associés à “Debian-SickRage_1”, je note donc l'ID du process (voir encadré rouge sur screen ci dessus) et utilise la commande kill -9

kill -9 40888

Pour vérifier

Je peux désormais supprimer les fichiers associés à cette VM, qui n'était déjà plus dans l'inventaire…

Commandes utiles pour la CLI VMware ESXi

Opérations sur les machines virtuelles

Avoir la liste des VMs enregistrer sur l’hôte (on obtient ainsi le VMid):

vim-cmd vmsvc/getallvms

Avoir la liste des VMs allumées sur l’hôte (on obtient ainsi le WorldID):

esxcli vm process list

Forcer l’arrêt propre d’une VM:

esxcli vm process kill -t soft -w <WorldID>

Forcer l’arrêt brutal d’une VM (en dernier recours):

esxcli vm process kill -t force -w <WorldID>

Avoir l’état d’une VM:

vim-cmd vmsvc/power.getstate <VMid>

Eteindre une VM:

vim-cmd vmsvc/power.off <VMid>

Allumer une VM:

vim-cmd vmsvc/power.on <VMid>

Redémarrer une VM:

vim-cmd vmsvc/power.reboot <VMid>

Recharger la configuration d’une VM (après modification du fichier .vmx):

vim-cmd vmsvc/reload <VMid>

Supprimer tous les Snapshots d’une VM:

vim-cmd vmsvc/snapshot.removeall <VMid>

Avoir une estimation de l’espace nécessaire pour consolider un Snapshot d’une VM:

vim-cmd vmsvc/get.spaceNeededForConsolidation <VMid>

Enregistrer une VM sur l’hôte:

vim-cmd solo/registervm /vmfs/volumes/datastore/VM2/VM2.vmx

Désenregistrer une VM d’un hôte:

vim-cmd hostsvc/unregister <VMid>

Avoir le résumé d’une VM:

vim-cmd vmsvc/get.summary <VMid>

Opérations sur les disques virtuels

Créer un disque virtuel:

vmkfstools -c 10G /vmfs/volumes/datastore1/VM3/VM3_1.vmdk

Ajouter un disque virtuel existant à une VM (en SCSI0:1):

vim-cmd vmsvc/device.addexisting <VMid> /vmfs/volumes/datastore1/VM3/VM3_1.vmdk 0 1

Ajouter un disque à une VM (l’équivalent des 2 précédentes commandes):

vim-cmd vmsvc/device.diskadd <VMid> 10G 0 1 datastore1

Convertir un disque virtuel de Thin en Thick:

vmkfstools -j /vmfs/volumes/datastore1/VM1/VM1.vmdk

Convertir un disque virtuel de Thick en Thin:

vmkfstools -K /vmfs/volumes/datastore1/VM1/VM1.vmdk

Cloner un disque virtuel Thick en Thin:

vmkfstools -i /vmfs/volumes/datastore1/VM1/VM1.vmdk -d thin /vmfs/volumes/datastore1/VM1/VM1-Thin.vmdk

Agrandir la taille d’un disque virtuel:

vmkfstools -X 15G /vmfs/volumes/datastore1/VM1/VM1.vmdk

Opérations sur l’hôte ESXi

Réinitialiser la configuration en mode usine (comme à la fin de l’installation):

/sbin/firmwareConfig.sh –reset

Attribuer une licence à l’hôte:

vim-cmd vimsvc/license –set XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

Mettre l’hôte en Mode Maintenance:

vim-cmd hostsvc/maintenance_mode_enter

Sortir l’hôte du Mode Maintenance:

vim-cmd hostsvc/maintenance_mode_exit

Synchroniser et sauvegarder la config de l’hôte (fichier généré dans /scratch/downloads):

vim-cmd hostsvc/firmware/sync_config

vim-cmd hostsvc/firmware/backup_config

Restaurer la config d’un hôte (à partir du fichier /tmp/configBundle.tgz):

vim-cmd hostsvc/firmware/restore_config /tmp/configBundle.tgz

Avoir la liste des patchs installés sur un hôte:

esxcli software vib list

Installer un patch manuellement (être en mode maintenance):

esxcli software vib update –depot=/vmfs/volumes/datastore1/ESXi500-201109001.zip

Autoriser un service sur le firewall de l’hôte:

esxcli network firewall ruleset set -r snmp -e true

Désactiver le firewall de l’hôte:

esxcli network firewall set -e false

Afficher la liste des codes erreur VMkernel:

vmkerrcode -l

Afficher la version de l’hôte:

esxcli system version get

Avoir la configuration des paramètres avancés:

esxcli system settings advanced list

Lancer l’interface DCUI (peut-être utile en SSH), faire un CTRL + C pour quitter :

dcui

Opérations sur les Services

Vérifier l’état du service « hostd »:

/etc/init.d/hostd status

Redémarrer le service « hostd »:

/etc/init.d/hostd restart

Redémarrer l’agent vCenter (« vpxa »):

/etc/init.d/vpxa restart

Redémarrer tous les services:

services.sh restart

Activer le SSH temporairement (jusqu’au prochain redémarrage):

/etc/init.d/SSH start

Activer et démarrer le SSH de façon permanente:

vim-cmd hostsvc/enable_ssh

vim-cmd hostsvc/start_ssh

Avoir la configuration du démarrage automatique de tous les services

chkconfig -l

Opérations sur la configuration réseau

Avoir la liste des interfaces réseau physique:

esxcli network nic list

Créer un vSwitch:

esxcli network vswitch standard add -v vSwitch1

Ajouter une interface physique à un vSwitch:

esxcli network vswitch standard uplink add -u vmnic1 -v vSwitch1

Ajouter un PortGroup à un vSwitch:

esxcli network vswitch standard portgroup add -p LAN -v vSwitch1

Ajouter une interface physique à un PortGroup (définir les interfaces actives):

esxcli network vswitch standard portgroup policy failover set -a vmnic0,vmnic1 -p LAN

Définir le VLAN d’un PortGroup:

esxcli network vswitch standard portgroup set -v 40 -p LAN

Associer une interface VMkernel à un PortGroup:

esxcli network ip interface add -i vmk1 -p NFS

Définir l’IP d’une interface VMkernel:

esxcli network ip interface ipv4 set -i vmk1 -I 10.40.1.1 -N 255.255.255.0 -t static

Activer le CDP sur un vSwitch:

esxcli network vswitch standard set –cdp-status both -v vSwitch1

Modifier le MTU d’une interface VMkernel:

esxcli network ip interface set -m 9000 -i vmk1

Modifier le MTU d’un vSwitch:

esxcli network vswitch set -m 9000 -v vSwitch1

Opérations sur le Stockage

Afficher la liste des LUNs:

esxcli storage nmp device list

Afficher la liste des chemins:

esxcli storage nmp path list

Afficher la correspondance entre les LUNs et les VMFS:

esxcli storage filesystem list

Faire un Rescan du SAN sur toutes les HBAs:

esxcli storage core adapter rescan –all

Ou aussi, faire un Rescan du SAN:

vim-cmd hostsvc/storage/vmfs_rescan

Rafraichir les LUNs:

vim-cmd hostsvc/storage/vmfs_refresh

Afficher la liste des volumes non-montés (car détectés comme Snapshot):

esxcli storage vmfs snapshot list

Forcer le montage d’un VMFS:

esxcli storage vmfs snapshot mount VMFS1

Resigner un VMFS:

esxcli storage vmfs snapshot resignature VMFS2

Afficher la compatibilité VAAI des volumes:

esxcli storage core device vaai status get

Activer initiateur iSCSI software:

esxcli iscsi software set -e true

Faire une redécouverte iSCSI

esxcli iscsi adapter discovery rediscover -A vmhba33

Afficher la liste des volumes NFS montés:

esxcli storage nfs list

Ajouter un volume NFS:

esxcli storage nfs add -H 10.40.1.100 -s /vol/share -v Vol_NFS

Avoir la liste des VMs allumés avec leur WorldGroupID et leur disques:

vscsiStats -l

Démarrer la collecte des stats pour une VM (s’arrête automatiquement au bout de 30 min):

vscsiStats -w <WorldGroupID> -s

Afficher un histogramme de latences des performances collectées:

vscsiStats -w <WorldGroupID> -p latency

Arrêter la collecte des stats d’une VM:

vscsiStats -x <WorldGroupID> -s