« L'homme qui déplace une montagne commence par déplacer les petites pierres.  »

Recherche glossaire

Rechercher dans les définitions (terme ou expression)
Commence par Contient Terme exactSe prononce comme

Traduction

frendeitptes
Warning
  • JFolder::files : le chemin n'est pas un répertoire. Chemin : images/Badges
Print Friendly, PDF & Email
Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 

Taille de la police :

Powershell

Suite à divers besoin d’automatisation, et en m’appuyant sur les nouveautés d’Hyper-V de Microsoft Windows 2012, j’ai remis en place un script qui me permet de sécuriser automatiquement mon infrastructure. Je m’explique :
La virtualisation offre de nos jours aux administrateurs plus de souplesse et de sécurité, notamment dans des phases de mises à jour importantes des serveurs et cela grâce aux captures instantanées.

Malgré ces avantages, ce système amène ces effets indésirables sous Microsoft Serveur 2008 R2. Dans cette version, lorsque qu’un administrateur système supprime une capture instantanée, le fichier de la capture n’est pas automatiquement supprimé du disque dur. Il est obligatoire d’arrêter le serveur pour que le processus de fusion se lance. Ce processus peut s’avérer très long (plusieurs heures) et nécessite qu’il y a suffisamment de place libre disponible sur le disque dur contenant les captures.
Donc, si vous utilisez les captures et que vous ne procédiez pas à la suppression de certaines d’entre elles manuellement en arrêtant les serveurs concernés pendant une durée indéterminée, vous risquiez très rapidement d’être en manque de place ce qui a la fâcheuse tendance à mettre en pause les serveurs.

J’ai donc mis en place en script en powershell me permettant d’automatiser cela en générant une capture de chaque machine virtuelle présente sur le serveur Hyper-V et en procédant à la suppression des captures vielles de plus de 6 jours.
L’Hyper-V de Microsoft Windows Serveur 2012 est doté d’une belle amélioration : la fusion des disques durs à chaud, ne nécessitant plus l’arrêt de la machine virtuelle.
Voici le contenu du script powershell :

##
## Réalisation des snapshot de toutes les VMs
##
$VM_Service = get-wmiobject -namespace root\virtualization Msvm_VirtualSystemManagementService

## Filtre pour éviter de récuperer la VM parent dans la liste
$ListofVMs = get-wmiobject -namespace root\virtualization Msvm_ComputerSystem -filter "ElementName <> Name"
foreach ($VM in [array]$ListOfVMs)
{
$VM_service.CreateVirtualSystemSnapShot($VM.__PATH)
}
##
## Temps de pause pour la réalisation des VMs
##
Start-Sleep(30)
##
## Suppression des snapshot donc la création est suppérieure à 6 jours
##
$VSVR = get-wmiobject -namespace root\virtualization -class Msvm_ComputerSystem
$VSSNAP = get-wmiobject -namespace root\virtualization -class Msvm_VirtualSystemSettingData -filter "SettingType = 5"

if (!($VSSNAP -eq $null))
{
foreach ($SS in [array] $VSSNAP)
{
if ($SS.ConvertToDateTime($SS.CreationTime) -le [DateTime]::Now.AddDays(-6).Date)
{
if (!($SS.ConvertToDateTime($SS.CreationTime).DayOfWeek -eq 0))
{
$VM_Service.RemoveVirtualSystemSnapshot($SS)
Start-Sleep(3)
}
}
}
}

Le script étant construit, j’ai créé une tâche planifiée quotidienne en lançant l’exécutable :

Powershell c:\snaps.ps1

A présent, à l’issue de la suppression d’une capture vielle de plus de 6 jours, Hyper-V 2012 fusionne à chaud les disques dur ! Fini le manque d’espace disque !

Le seul problème qui demeure encore et il est de taille, c'est que le script en question ne se lancera pas du fait que le script n'est pas signé. Je vous renvoi ici pour comprendre cette sécurité. Comme par défaut la sécurité est positionnée sur "Restricted" et que ce niveau m'empêche de lancer mon script.

Afin de ne pas passer sur tous les serveurs (notamment Hyper-V), j'ai téléchargé le modèle d'administration Powershell afin d'effectuer ce paramétrage via GPO.

GPO-Powershell

Vous devez être authentifié pour pouvoir laisser des commentaires...

Print Friendly, PDF & Email