Note du 05/05/2012 : Quelques corrections, modif de PowerShell V2 pour NT5.
Heureusement, pour palier à ce problème VMware fournit le client PowerCLI, qui permet d'administrer les serveurs et les machines virtuelles en exploitant la possibilités de PowerShell.
Je vais vous présenter PowerCLI en quelques mots et vous montrer comment gagner du temps en utilisant PowerCLI sur votre infrastructure de virtualisation.
Prérequis et Installation
Votre poste de travail doit posséder PowerShell, déjà présent en version 2 sur les NT6 (Vista,7, 2008 etc.), mais à installer sur les NT5 (XP, 2003 etc.).
Ensuite vous devez installer le client PowerCLI, disponible sur le site de VMware : http://www.vmware.com/support/developer/PowerCLI/index.html
Avant de lancer PowerCLI, vous devez autoriser PowerShell à exécuter des scripts non signés. Pour cela lancez une instance PowerShell et tapez :
Set-ExecutionPolicy RemoteSigned
Cette commande modifie le profil global de PowerShell (pour tous les utilisateurs PowerShell du poste de travail), son comportement sera alors le suivant :
- Les scripts exécutés localement peuvent être exécutés sans être signés
- Les scripts téléchargés à partir d’internet doivent être signés
- Ne demande pas de confirmation avant d’exécuter des scripts signés ou non par une autorité de certification connue de votre ordinateur
PS> Add-PSSnapin VMware.VimAutomation.Core
PS> Initialize-VIToolkitEnvironment.ps1
Une fois votre console lancée en PowerCLI, vous devez maintenant vous connecter à un serveur ESX. Voici la commande de connexion :
PS> Connect-VIServer IP_ou_DNS
Il est possible de fournir beaucoup plus d'informations :
PS> Connect-VIServer -Server IP_ou_DNS -Protocol https -User admin -Password pass
Les informations manquantes seront demandées de manière interactive.
PowerCLI respecte bien l'architecture PowerShell, c'est à dire un format verbe-nom -commutateurs globaux (name, destination etc.).
Un simple get-help vm vous sort toutes les commandes d'administration des machines virtuelles, les possibilités sont étourdissante.
Quelques commandes de base :
Récupérer des infos sur une VM :
PS> Get-VM -Name "Vm-Name"
Récupérer la liste des VM d'un centre :
PS> Get-VM -Location Nancy
Arrêter brutalement une VM :
PS> Stop-VM -VM "VM-Name"
Arrêter une VM contenant les VMWare Tools proprement :
PS> Shutdown-VMGuest -VM "VM-Name"
Démarrer une VM :
PS> Start-VM -VM "VM-Name"
Mettre en pause une VM :
PS> Suspend-VM -VM "VM-Name"
Supprimer une VM de l'inventaire
PS> Remove-VM -VM "VM-Name"
Redémarrer une VM contenant les VMWare Tools proprement :
PS> Restart-VMGuest -VM "VM-Name"
Supprimer une VM de l'inventaire ET du datastore
PS> Remove-VM -VM "VM-Name" -DeletePermanently
L'idée maintenant, c'est de "piper" ces différentes commandes afin d'exécuter des tâches lourdes en quelques lignes.
Quelques commandes cooool
Déconnecter toutes les images ISO montées dans les VM :
PS> Get-cddrive -VM * | Where {$_.ISOPATH -ne $null} | set-cddrive -nomedia
Mettre en pause toutes les VM actives sur un cluster :
PS> get-vm -location cluster_ou_serveur | where {$_.PowerState -eq "PoweredOn"} | suspend-vm
Démarrer les VM en pause:
PS> get-vm -location cluster_ou_serveur| where {$_.PowerState -eq "Suspended"} | Start-vm
Déplacer l'ensemble des machines virtuelles d'un serveur à un autre :
PS> get-vm -location serveur_1 | move-vm -destination serveur_2
Pour déplacer toutes les VM allumées :
PS> get-vm -location serveur_1 | where {$_.PowerState -eq "PoweredOn"} | move-vm -destination serveur_2
Migration de Datastore (d'un stockage à un autre) :
PS> get-vm -location cluster_ou_serveur | move-vm -Datastore nom_datastore
Pour aller plus loin :
Documentation et téléchargement PowerCLI : http://www.vmware.com/support/developer/PowerCLI/index.html
Une référence FR sur PowerShell : http://www.powershell-scripting.com/
Initiation PowerShell sur le MSDN : http://msdn.microsoft.com/fr-fr/visualc/bb906067
Explication sur les profiles PowerShell : http://www.winmgr.com/?p=1645
QuickStart pour PowerCLI 4.1.1 : http://communities.vmware.com/servlet/JiveServlet/download/1696554-55551/Final-PowerCLI-4.1.1.pdf
N'hésitez pas si vous avez des questions ou des commandes sympa à partager.
Je rajouterai mes prochaines découvertes dans un second billet.
Aucun commentaire:
Enregistrer un commentaire