Article de Vladimir Eremin, responsable de produit chez Veeam. Vladimir est très actif sur les Forums Veeam, sur Twitter et sur Spiceworks. PowerShell est l’un des points forts de Vladimir et il nous emmène en visite guidée dans ce processus à l’occasion de cet article de blog. N’hésitez pas à utiliser les Forums Veeam pour poser vos éventuelles questions sur les parties de PowerShell mentionnées ici. Vous pouvez également télécharger le script d’exemple pour VMware et le script d’exemple pour Hyper-V et discuter sur le sujet dans les Forums Veeam.
Notre Veeam Backup Free Edition a été l’outil gratuit le plus demandé, en grande partie grâce à sa fonctionnalité VeeamZIP qui donne la possibilité d’effectuer des sauvegardes complètes interactives sur un nombre illimité de VMs. Cependant, VeeamZIP a toujours eu une petite limitation irritante : son incapacité à programmer des sauvegardes régulières. En fait, comme VeeamZIP ne peut être déclenché que de manière interactive, il n’existe tout simplement aucun moyen dans l’interface de planifier des tâches de sauvegarde régulières. Si vous avez déjà essayé, vous serez heureux d’apprendre qu’à partir de l’Update 2, ce n’est plus le cas ! Nous avons identifié cette demande sur les forums Veeam, Twitter et autres, et nous y avons répondu en créant le cmdlet PowerShell Start-VBRZip disponible dans la Free Edition.
Comment ça fonctionne
Comme indiqué plus haut, la principale fonctionnalité de Veeam Backup Free Edition est la capacité à effectuer des sauvegardes VeeamZIP de vos VMs (et bien sûr, de restaurer les VMs, les fichiers du guest OS et les objets applicatifs depuis ces sauvegardes). VeeamZIP produit toujours un fichier de sauvegarde complète (.vbk) qui se sert de point de restauration indépendant. La Free Edition vous permet de stocker le fichier de sauvegarde dans une cible de sauvegarde, dans un dossier local ou sur un partage réseau.
Quand vous effectuez une sauvegarde avec VeeamZIP, vous pouvez démarrer le processus de sauvegarde des VMs sélectionnées immédiatement. Ce type de sauvegarde exige des paramètres minimaux et il est donc extrêmement facile à déclencher manuellement.
Avec l’Update 2, vous pouvez désormais rédiger un simple script PowerShell (ici pour VMware et ici pour Hyper-V) qui démarre VeeamZIP pour une VM sélectionnée et configurez la planification souhaitée au moyen de Windows Scheduler. Nous avons même créé le script d’exemple suivant à votre intention. Non seulement il déclenchera les sauvegardes VeeamZIP des VMs voulues, mais il vous enverra aussi un rapport de résultats de sauvegarde agréablement formaté par e-mail !
Paramètres du script
Ce script est capable d’effectuer des sauvegardes ad hoc de VMs sélectionnées résidant sur un hôte autonome ou un cluster, ou un serveur vCenter. Avant d’exécuter le script, vous devez fournir trois paramètres obligatoires : les noms des VMs à sauvegarder, l’hôte sur lequel ces VMs sont situées et le répertoire dans lequel les fichiers de sauvegarde doivent être stockés. Remarque : ce script a été mis à jour le 18/05 suite aux commentaires reçus.
##################################################################
# Variables définies par l’utilisateur
##################################################################
# Noms des VMs à sauvegarder séparés par des virgules (obligatoire). Par exemple, $VMNames = “VM1”,”VM2”
$VMNames = ""
# Nom du serveur vCenter ou de l’hôte autonome sur lequel se trouvent les VMs à sauvegarder (obligatoire)
$HostName = ""
# Répertoire dans lequel les sauvegardes de VMs doivent être placées (obligatoire, par ex. : C:\Backup)
$Directory = ""
En option, vous pouvez changer le niveau de compression et la rétention souhaitée, désactiver la quiescence VMware, activer le chiffrement ou modifier les paramètres de notification :
# Niveau de compression souhaité (en option, valeurs possibles : 0 - aucune, 4 - déduplication, 5 - optimal, 6 - élevé, 9 - extrême)
$CompressionLevel = "5"
# Suspendre la VM lors de la prise du snapshot (en option, des composants d’intégration VMware Tools ou Hyper-V sont nécessaires pour cela dans le guest OS, valeurs possibles : $True/$False)
$EnableQuiescence = $True
# Protéger la sauvegarde résultante au moyen d’une clé de chiffrement (en option, $True/$False)
$EnableEncryption = $False
# Clé de chiffrement (en option, chemin d’accès vers une chaîne sécurisée)
$EncryptionKey = ""
# Paramètres de rétention (en option, les fichiers VeeamZIP ne sont pas supprimés par défaut, mais conservés dans l’emplacement spécifié pendant une durée indéfinie.
# Valeurs possibles : Never, Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)
$Retention = "Never"
Si vous souhaitez recevoir un rapport par e-mail après achèvement de la sauvegarde, vous devez indiquer également les paramètres de notification suivants.
##################################################################
# Paramètres de notification
##################################################################
# Activer les notifications (en option)
$EnableNotification = $True
# Serveur e-mail SMTP
$SMTPServer = ""
# EXPÉDITEUR e-mail
$EmailFrom = ""
# DESTINATAIRE e-mail
$EmailTo = ""
# OBJET e-mail
$EmailSubject = ""
Le rapport envoyé par e-mail aura l’apparence suivante :
Name | Start Time | End Time | Result | Details |
CentOS-tiny_2015-03-26T180459 | 3/26/2015 6:04:59 PM | 3/26/2015 6:07:17 PM | Warning | Processing finished with warnings at 3/26/2015 6:07:13 PM Cannot use VMware Tools quiescence because VMware Tools are not found. |
CentOS-tiny_replica_2015-03-26T180720 | 3/26/2015 6:07:20 PM | 3/26/2015 6:11:20 PM | Success | Processing finished at 3/26/2015 6:11:18 PM |
Tous les paramètres mentionnés ci-dessus peuvent être configurés en définissant les valeurs de certaines variables. Par exemple, pour activer le chiffrement, vous devez affecter la valeur $True (booléen) à la variable $EnableEncryption et fournir la clé de chiffrement (voir le chapitre suivant). De plus, si vous voulez que les fichiers de sauvegarde soient supprimés après deux semaines, vous devez affecter la valeur « In2Weeks » (chaîne) à la variable $Retention, etc. Vous n’avez pas besoin de mémoriser ce que font les variables individuelles. Pour votre commodité, le script d’exemple comprend une brève description de chacune d’entre elles.
Chiffrement
Pour en revenir au chiffrement, la sécurité des données constitue une partie essentielle de la stratégie de sauvegarde. Les données de sauvegarde doivent être protégées contre les accès non autorisés, en particulier quand des données sensibles sont sauvegardées dans un emplacement hors site ou archivées sur bande. Pour assurer la sécurité de vos données, vous pouvez chiffrer vos sauvegardes VeeamZIP. Comme indiqué ci-dessus, il faut alors spécifier un fichier contenant le mot de passe de chiffrement.
Bien sûr, vous pourriez fournir le mot de passe à un script sous forme de texte brut. Cependant, les chaînes ordinaires sont non sécurisées (c’est le moins qu’on puisse dire), car elles sont stockées en mémoire sous forme de texte brut. En résultat, la plupart des cmdlets PowerShell n’acceptent tout simplement pas les mots de passe sous cette forme.
Une chaîne sécurisée constitue une meilleure option. Ce type de chaîne ressemble à une chaîne ordinaire, mais son contenu est chiffré en mémoire. Il fait appel à un chiffrement réversible afin que le mot de passe puisse être déchiffré lorsque nécessaire, mais uniquement au moyen de la clé principale ayant servi à le chiffrer. Pour créer une chaîne sécurisée, vous devez ouvrir la console PS et entrer les deux lignes suivantes. Lors de l’exécution, le code vous invitera à indiquer un mot de passe, puis l’enregistrera dans un fichier, sous forme de chaîne sécurisée :
$SecurePassword =
Read-Host -Prompt
"Enter password" -AsSecureString
$SecurePassword |
ConvertFrom-SecureString
> “Directory where secure string should be stored; C:\SecureString.txt, for instance”
Après cela, spécifiez le chemin d’accès au fichier nouvellement créé dans le script principal :
# Protéger la sauvegarde résultante au moyen d’une clé de chiffrement (en option, $True/$False)
$EnableEncryption = $True
# Clé de chiffrement (en option, chemin d’accès vers une chaîne sécurisée)
$EncryptionKey = "C:\SecureString.txt"
Programmer l’exécution du script
Avant de programmer le démarrage du script, assurez-vous de le lancer manuellement pour vérifier qu’il s’exécute comme prévu.
La manière la plus facile de planifier automatiquement l’exécution du script pour effectuer des sauvegardes périodiques consiste à utiliser Windows Task Scheduler. Ouvrez simplement l’outil Task Scheduler et créez une nouvelle tâche de base :
Affectez-lui un nom et une description afin de facilement vous rappeler ce qu’elle fait.
La page suivante est celle du déclencheur de tâches. Elle est très simple et explicite. Les options disponibles sont très flexibles (tout est possible, de plusieurs sauvegardes par jour à une sauvegarde par mois). Il vous suffit donc de définir les valeurs correspondant à vos exigences en matière de RPO. La plupart des gens utilisent des sauvegardes quotidiennes :
Paramétrez l’heure de démarrage de la tâche pendant les heures de fermeture. Dans cet exemple, la tâche s’exécute chaque soir à 22 h à compter du 22 avril 2015.
Dans la page d’action suivante, indiquez que vous souhaitez que la tâche planifiée démarre un programme, puis cliquez sur Suivant.
Sur le panneau de démarrage de programme, placez la commande suivante dans la rubrique Program/script :
Powershell –file « chemin d’accès au fichier Veeamzip.ps1 »
C’est tout ! Mais il est possible que nous souhaitions ouvrir la tâche après sa création pour effectuer quelques changements. Pour cela, sélectionnez Open the Properties dialog for this task when I click Finish :
Étant donné que la tâche doit être exécutée sur un serveur sur lequel l’utilisateur ne sera peut-être pas identifié au moment de l’exécution de la tâche, il est judicieux d’activer l’exécution de la tâche indépendamment de la présence de l’utilisateur ou en associant les informations d’identification de l’utilisateur à la tâche.
Une fois cela effectué, effectuez un clic droit sur la tâche et sélectionnez Run pour vous assurer qu’elle fonctionne correctement :
PowerShell donne aux utilisateurs ce qu’ils ont toujours voulu obtenir de Veeam Backup Free Edition !
Maintenant que vous êtes armé de cette nouvelle capacité formidable, vous devriez pouvoir atteindre le but tant convoité : effectuer des sauvegardes planifiées avec Veeam Backup Free Edition, ce qui vous offre beaucoup plus de fonctionnalités de sauvegarde et de restauration que les autres solutions de sauvegarde gratuites à base de scripts.