Gérer les planifications dans Azure Automation

Pour planifier le démarrage d'un Runbook dans Azure Automation à une heure spécifiée, liez-le à une ou plusieurs planifications. Une planification peut être configurée pour une exécution des Runbooks ponctuelle ou régulière à des heures et jours précis dans le portail Azure. Vous pouvez également planifier une exécution hebdomadaire ou mensuelle, ou des jours spécifiques de la semaine ou du mois, ou encore un jour particulier du mois. Un Runbook peut être lié à plusieurs planifications et une planification peut avoir plusieurs Runbooks qui lui sont liés.

Remarque

Azure Automation prend en charge l’heure d’été et la planifie de manière appropriée pour les opérations d’automatisation.

Remarque

Actuellement, les planifications ne sont pas activées pour les configurations Azure Automation DSC.

Cmdlets PowerShell utilisées pour accéder aux planifications

Les cmdlets du tableau suivant créent et gèrent les planifications Automation à l’aide de PowerShell. Elles sont fournies avec les Modules Az.

Applets de commande Description
Get-AzAutomationSchedule Récupère une planification.
Get-AzAutomationScheduledRunbook Récupère les Runbooks planifiés.
New-AzAutomationSchedule Crée une planification.
Register-AzAutomationScheduledRunbook Associe un Runbook à une planification.
Remove-AzAutomationSchedule Supprime une planification.
Set-AzAutomationSchedule Définit les propriétés d'une planification existante.
Unregister-AzAutomationScheduledRunbook Dissocie un Runbook d'une planification.

Créer une planification

Vous pouvez créer une planification pour vos runbooks à partir du portail Azure, avec PowerShell, ou à l’aide d’un modèle Azure Resource Manager (ARM). Pour éviter d’affecter vos runbooks et les processus qu’ils automatisent, vous devez tout d’abord tester les runbooks ayant des planifications associées avec un compte Automation dédié au test. Un test valide que vos runbooks planifiés continuent de fonctionner correctement. En cas de problème, vous pouvez le corriger et appliquer les modifications requises avant de migrer la version de runbook mise à jour en production.

Remarque

Votre compte Automation n’obtient pas automatiquement les nouvelles versions des modules, sauf si vous les avez mis à jour manuellement en sélectionnant l’option Mettre à jour les modules Azure du panneau Modules. Azure Automation utilise les modules les plus récents de votre compte Automation durant l’exécution d’un nouveau travail planifié.

Créer une planification à l’aide du Portail Azure

  1. À partir de votre compte Automation, dans le volet gauche, sélectionnez Planifications sous Ressources partagées.

  2. Dans la page Planifications, sélectionnez Ajouter une planification.

  3. Dans la page Nouvelle planification, saisissez un nom et éventuellement une description pour la nouvelle planification.

    Remarque

    Actuellement, les planifications Automation ne prennent pas en charge l’utilisation de caractères spéciaux dans le nom de la planification.

  4. Indiquez si la planification doit s’exécuter une seule fois ou selon un calendrier récurrent en sélectionnant Une fois ou Récurrent. Si vous sélectionnez Une fois, indiquez une heure de début, puis sélectionnez Créer. Si vous sélectionnez Récurrent, spécifiez une heure de début. Pour Répéter chaque, sélectionnez la fréquence à laquelle vous souhaitez que le runbook se répète. Sélectionnez par heure, jour, semaine ou mois.

    • Si vous sélectionnez Semaine, vous pouvez choisir parmi les jours de la semaine. Sélectionnez autant de jours que vous le voulez. La première exécution de votre planification a lieu le premier jour sélectionné, après l’heure de début. Par exemple, si vous planifiez des runbooks pour le week-end, sélectionnez samedi et dimanche.

    Configuration d’une planification récurrente pour le week-end

    • Si vous sélectionnez Mois, vous disposez de différentes options. Pour l’option Occurrences mensuelles, sélectionnez Jours du mois ou Jours de la semaine. Si vous sélectionnez Jours du mois, un calendrier s’affiche pour vous permettre de choisir autant de jours que vous le souhaitez. Si par exemple vous choisissez comme date le 31, et que le mois en cours ne dispose pas de 31e jour, la planification ne sera pas exécutée. Si vous souhaitez que la planification s’exécute le dernier jour, sélectionnez Oui sous Run on last day of month (Exécution le dernier jour du mois). Si vous sélectionnez Jours de la semaine, l’option Tous les s’affiche. Choisissez Premier, Deuxième, Troisième, Quatrième ou Dernier. Enfin, choisissez un jour pour la répétition.

    Planification mensuelle le premier, le quinzième et le dernier jours du mois

  5. Lorsque vous avez terminé, cliquez sur Créer.

Créer une planification avec PowerShell

Vous utilisez la cmdlet New-AzAutomationSchedule pour créer des planifications. Spécifiez l’heure de début de la planification et indiquez sa fréquence d’exécution. Les exemples suivants montrent comment créer de nombreux scénarios de planification différents.

Remarque

Actuellement, les planifications Automation ne prennent pas en charge l’utilisation de caractères spéciaux dans le nom de la planification.

Créer une planification unique

L’exemple suivant crée une planification unique.

$TimeZone = ([System.TimeZoneInfo]::Local).Id
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule01" -StartTime "23:00" -OneTime -ResourceGroupName "ResourceGroup01" -TimeZone $TimeZone

Créer une planification périodique

L’exemple suivant montre comment créer une planification périodique qui s’exécute tous les jours à 13 h pendant un an.

$StartTime = Get-Date "13:00:00"
$EndTime = $StartTime.AddYears(1)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule02" -StartTime $StartTime -ExpiryTime $EndTime -DayInterval 1 -ResourceGroupName "ResourceGroup01"

Créer une planification périodique hebdomadaire

L’exemple suivant montre comment créer une planification hebdomadaire qui est exécutée uniquement en semaine.

$StartTime = (Get-Date "13:00:00").AddDays(1)
[System.DayOfWeek[]]$WeekDays = @([System.DayOfWeek]::Monday..[System.DayOfWeek]::Friday)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule03" -StartTime $StartTime -WeekInterval 1 -DaysOfWeek $WeekDays -ResourceGroupName "ResourceGroup01"

Créer une planification périodique hebdomadaire pour le week-end

L’exemple suivant montre comment créer une planification hebdomadaire qui s’exécute uniquement le week-end.

$StartTime = (Get-Date "18:00:00").AddDays(1)
[System.DayOfWeek[]]$WeekendDays = @([System.DayOfWeek]::Saturday,[System.DayOfWeek]::Sunday)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Weekends 6PM" -StartTime $StartTime -WeekInterval 1 -DaysOfWeek $WeekendDays -ResourceGroupName "ResourceGroup01"

Créer une planification périodique pour le premier, le quinzième et le dernier jours du mois

L’exemple suivant montre comment créer une planification périodique qui s’exécute le premier, le quinzième et le dernier jours du mois.

$StartTime = (Get-Date "18:00:00").AddDays(1)
New-AzAutomationSchedule -AutomationAccountName "TestAzureAuto" -Name "1st, 15th and Last" -StartTime $StartTime -DaysOfMonth @("One", "Fifteenth", "Last") -ResourceGroupName "TestAzureAuto" -MonthInterval 1

Créer une planification avec un modèle Resource Manager

Dans cet exemple, nous utilisons un modèle Automation Resource Manager (ARM) qui crée une planification de travail. Pour obtenir des informations générales sur ce modèle pour gérer les planifications de travaux Automation, consultez Guide de référence du modèle Microsoft.Automation automationAccounts/jobSchedules.

Copiez ce fichier de modèle dans un éditeur de texte :

{
  "name": "5d5f3a05-111d-4892-8dcc-9064fa591b96",
  "type": "Microsoft.Automation/automationAccounts/jobSchedules",
  "apiVersion": "2015-10-31",
  "properties": {
    "schedule": {
      "name": "scheduleName"
    },
    "runbook": {
      "name": "runbookName"
    },
    "runOn": "hybridWorkerGroup",
    "parameters": {}
  }
}

Modifiez les valeurs de paramètre suivantes et enregistrez le modèle en tant que fichier JSON :

  • Nom de l’objet de la planification du travail : un GUID (identificateur global unique) est utilisé comme nom d’objet de planification de travail.

    Important

    Pour chaque planification de travail déployée avec un modèle ARM, le GUID doit être unique. Même si vous replanifiez une planification existante, vous devez modifier le GUID. Cela s’applique même si vous avez précédemment supprimé une planification de travail existante qui a été créée avec le même modèle. La réutilisation du même GUID entraîne l’échec d’un déploiement.

    Certains services en ligne peuvent générer un nouveau GUID pour vous, comme le Générateur de GUID gratuit en ligne.

  • Nom de la planification : représente le nom de la planification du travail Automation qui sera liée au runbook spécifié.

  • Nom du runbook : représente le nom du runbook Automation auquel la planification de travail doit être associée.

Une fois le fichier enregistré, vous pouvez créer la planification de travail de runbook à l’aide de la commande PowerShell suivante. La commande utilise le paramètre TemplateFile pour spécifier le chemin d’accès et le nom de fichier du modèle.

New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "<path>\RunbookJobSchedule.json"

Un Runbook peut être lié à plusieurs planifications et une planification peut avoir plusieurs Runbooks qui lui sont liés. Si un Runbook possède des paramètres, vous pouvez leur fournir des valeurs. Vous devez fournir des valeurs pour tous les paramètres obligatoires et vous pouvez aussi fournir des valeurs pour les paramètres facultatifs. Ces valeurs sont utilisées à chaque démarrage du Runbook par cette planification. Vous pouvez attacher le même Runbook à une autre planification et spécifier différentes valeurs de paramètre.

  1. Dans le Portail Azure, à partir de votre compte Automation, sélectionnez Runbooks sous Automatisation des processus.
  2. Sélectionnez le nom du Runbook à planifier.
  3. Si le runbook n’est pas lié à une planification, vous avez la possibilité de créer une planification ou de le lier à une planification existante.
  4. Si le runbook comprend des paramètres, vous pouvez sélectionner l’option Modifier les paramètres d’exécution (par défaut : Azure) et le volet Paramètres s’affiche. Vous pouvez y entrer les informations correspondantes.

Utilisez la cmdlet Register-AzAutomationScheduledRunbook pour lier une planification. Vous pouvez spécifier les valeurs des paramètres du Runbook avec le paramètre Parameters. Pour plus d’informations sur la spécification des valeurs des paramètres, consultez Démarrage d’un Runbook dans Azure Automation. L’exemple suivant montre comment lier une planification à un runbook à l’aide d’une cmdlet Azure Resource Manager avec des paramètres.

$automationAccountName = "MyAutomationAccount"
$runbookName = "Test-Runbook"
$scheduleName = "Sample-DailySchedule"
$params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
Register-AzAutomationScheduledRunbook -AutomationAccountName $automationAccountName `
-Name $runbookName -ScheduleName $scheduleName -Parameters $params `
-ResourceGroupName "ResourceGroup01"

Planifier l’exécution plus fréquente des runbooks

L’intervalle le plus fréquent pour lequel une planification dans Azure Automation peut être configurée est d’une heure. Si vous avez besoin d’exécuter les planifications plus fréquemment, il existe deux options :

  • Créer un webhook pour le runbook et utiliser Azure Logic Apps pour appeler le webhook. Azure Logic Apps permet une plus grande précision lors de la définition d’une planification.

  • Créer quatre planifications éloignées de 15 minutes et exécutées une fois par heure. Ce scénario permet au runbook de s’exécuter toutes les 15 minutes avec différentes planifications.

Désactiver une planification

Lorsque vous désactivez une planification, les Runbooks qui y sont liés ne s'exécutent plus sur cette planification. Vous pouvez désactiver manuellement une planification ou affecter un délai d’expiration aux planifications selon une certaine fréquence lors de leur création. Lorsque le délai d'expiration est atteint, la planification est désactivée.

Désactiver une planification à partir du Portail Azure

  1. Dans votre compte Automation, dans le volet gauche, sélectionnez Planifications sous Ressources partagées.
  2. Sélectionnez le nom d’une planification pour ouvrir le volet Détails.
  3. Remplacez Activé par Non.

Remarque

Si vous souhaitez désactiver une planification dont l’heure de début est située dans le passé, vous devez remplacer sa date de début par une date ultérieure avant de l’enregistrer.

Désactiver une planification avec PowerShell

Utilisez la cmdlet Set-AzAutomationSchedule pour modifier les propriétés d’une planification existante. Pour désactiver la planification, spécifiez False pour le paramètre IsEnabled.

L’exemple suivant montre comment désactiver la planification d’un runbook à l’aide d’une cmdlet Azure Resource Manager.

$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Set-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -IsEnabled $false -ResourceGroupName "ResourceGroup01"

Supprimer une planification

Lorsque vous êtes prêt à supprimer vos planifications, vous pouvez utiliser le Portail Azure ou PowerShell. N’oubliez pas que vous pouvez uniquement supprimer une planification qui a été désactivée comme décrit dans la section précédente.

Supprimer une planification à l’aide du portail Azure

  1. Dans votre compte Automation, dans le volet gauche, sélectionnez Planifications sous Ressources partagées.
  2. Sélectionnez le nom d’une planification pour ouvrir le volet Détails.
  3. Cliquez sur Supprimer.

Supprimer une planification avec PowerShell

Vous pouvez utiliser la cmdlet Remove-AzAutomationSchedule comme indiqué ci-dessous pour supprimer une planification existante.

$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Remove-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -ResourceGroupName "ResourceGroup01"

Étapes suivantes