Tutoriel : créer un runbook Python 3.8

Ce didacticiel vous guide dans la création d’un Runbook Python 3.8 dans Azure Automation. Les runbooks Python se compilent sous Python 2.7 et 3.8 Vous pouvez modifier directement le code du runbook à l’aide de l’éditeur de texte dans le Portail Azure.

  • Créer un runbook Python simple
  • Tester et publier le runbook
  • Exécuter le travail du runbook et en suivre l’état
  • Mettre à jour le runbook pour démarrer une machine virtuelle Azure avec des paramètres de runbook

Prérequis

Pour suivre ce didacticiel, vous avez besoin des éléments suivants :

  • Un abonnement Azure. Si vous n’avez pas encore d’abonnement, vous pouvez activer vos avantages abonnés MSDN ou créer un compte gratuit.

  • Compte Azure Automation pour le stockage du runbook et l’authentification auprès des ressources Azure à l’aide des identités managées. Le système crée automatiquement une identité managée pour vous lorsque vous créez le compte Automation.

  • Une machine virtuelle Azure. Dans ce tutoriel, vous allez démarrer, puis arrêter cette machine. Il ne doit donc pas s’agir d’une machine virtuelle de production.

Créer un Runbook

Commençons par créer un runbook simple qui retourne le texte Hello World.

  1. Dans le portail Azure, ouvrez votre compte Automation.

    La page du compte Automation vous offre un aperçu rapide des ressources de ce compte. Vous devriez déjà posséder certains éléments. La plupart de ces éléments représentent les modules automatiquement inclus dans un nouveau compte Automation.

    Vous devez également avoir activé une identité managée mentionnée dans les conditions préalables. Vous pouvez vérifier ce point en affichant la ressource Identité sous Paramètres du compte.

  2. Sélectionnez Runbooks sous Automatisation de processus pour ouvrir la liste des runbooks.

  3. Sélectionnez Créer un runbook pour créer un runbook.

  4. Nommez le runbook MyFirstRunbook-Python.

  5. Sélectionnez Python comme type de runbook.

  6. Sélectionnez Python 3.8 comme version du runtime.

  7. Sélectionnez Créer pour créer le runbook et ouvrez l’éditeur de texte.

Ajouter du code au Runbook

Ajoutez maintenant une commande simple pour imprimer le texte Hello World.

print("Hello World!")

Sélectionnez Enregistrer pour enregistrer le runbook.

Tester le Runbook

Avant de publier le runbook pour le rendre disponible en production, vous voulez le tester pour vous assurer qu’il fonctionne correctement. Lorsque vous testez un runbook, vous exécutez son brouillon et affichez sa sortie de manière interactive.

  1. Sélectionnez l’option Volet de test pour ouvrir le volet Test.

  2. Sélectionnez Démarrer pour démarrer le test. Cette option doit être la seule activée.

  3. Une tâche de Runbook est créée et son état apparaît. L’état initial de la tâche est Mis en file d’attente pour indiquer que la tâche attend qu’un Runbook Worker du cloud devienne disponible. Il passe à En cours de démarrage lorsqu’un Worker sélectionne la tâche, puis à En cours d’exécution lorsque le runbook se lance.

  4. Lorsque la tâche du Runbook est terminée, sa sortie s'affiche. Dans ce cas, Hello World devrait apparaître.

  5. Fermez le volet Test pour revenir au canevas.

Publier et démarrer le Runbook

Le runbook que vous avez créé est toujours en mode brouillon. Il faut le publier pour pouvoir l’exécuter en production. Lorsque vous publiez un Runbook, vous écrasez la version publiée existante par la version brouillon. Dans ce cas, vous n’avez pas encore de version publiée car vous venez de créer le runbook.

  1. Sélectionnez l’option Publier pour publier le runbook, puis cliquez sur Oui quand vous y êtes invité.

  2. Si vous fermez le volet MyFirstRunbook_python , le système vous renvoie à la page Runbooks où le champ État de création doit indiqué Publié.

  3. Sélectionnez le nom MyFirstRunbook-Python dans la liste. Le système vous renvoie dans le volet MyFirstRunbook-Python.

    Les options de la partie supérieure vous permettent de démarrer le runbook, de l’afficher, de le modifier, de planifier son démarrage à l’heure de votre choix, et bien plus encore.

  4. Sélectionnez Démarrer puis OK à l’ouverture du volet Démarrer le runbook.

  5. Le volet Tâche s’ouvre pour la tâche du runbook qui vient d’être créée. Vous pouvez fermer ce volet, mais laissez-le ouvert pour pouvoir suivre la progression de la tâche.

  6. L’état de la tâche s’affiche dans le champ État sous Essentials. Les valeurs indiquées correspondent aux valeurs d’état affichées lorsque vous avez testé le runbook.

  7. Dès que l’état du runbook indique Terminé, sélectionnez l’onglet Sortie. L’onglet Sortie affiche Hello World.

  8. Fermez le volet Sortie.

  9. Sélectionnez l’onglet Tous les journaux pour afficher les flux de la tâche du runbook. Vous ne devriez voir que Hello World dans le flux de sortie. Cependant, cet onglet peut afficher d’autres flux pour une tâche de runbook, comme Détaillé ou Erreur, si le runbook écrit des données dans ces flux.

  10. Fermez le volet Tâches pour revenir au volet MyFirstRunbook-Python.

  11. Sélectionnez la ressource Tâches pour ouvrir la page de la ressource Tâches de ce runbook. Cette page répertorie toutes les tâches créées par ce runbook. Vous devez voir un seul travail, car vous n’avez exécuté le travail qu’une seule fois.

  12. Vous pouvez sélectionner ce travail pour ouvrir le même volet Tâche que celui vous avez consulté au démarrage du runbook. Ce volet vous permet de revenir en arrière et d’afficher les détails de toute tâche créée pour un runbook donné.

Ajouter une authentification pour gérer les ressources Azure

Vous avez testé et publié votre runbook, mais jusqu’à présent, il ne fait rien d’utile. Vous souhaitez qu’il gère les ressources Azure. Pour gérer les ressources, ce script doit s’authentifier.

Pour l’authentification, nous vous recommandons d’utiliser une identité managée. Lorsque vous créez le compte Automation, le système crée automatiquement une identité managée pour vous.

Pour utiliser ces échantillons, ajoutez les packages suivants dans la ressource Packages Python du compte Automation. Vous pouvez ajouter les fichiers WHL de ces packages à l’aide de ces liens.

Lorsque vous ajoutez ces packages, sélectionnez une version du runtime qui correspond à votre runbook.

Notes

Le code suivant a été testé avec la version 3.8 du runtime.

Identité managée

Pour utiliser une identité managée, vérifiez qu’elle est activée :

  • Pour vérifier si l’identité managée est activée pour le compte Automation, accédez à votre compte Automation>Paramètres du compte>Identité, puis définissez le paramètre État sur Activé.
  • L’identité managée a un rôle attribué pour gérer la ressource. Dans cet exemple de gestion d’une ressource de machine virtuelle, ajoutez le rôle « Contributeur de machine virtuelle » au groupe de ressources de qui contient la machine virtuelle. Pour plus d’informations, consultez Attribuer des rôles Azure en utilisant le Portail Azure

Une fois le rôle de l’identité managée configuré, vous pouvez commencer à ajouter du code.

  1. Ouvrez l’éditeur de texte en sélectionnant Modifier dans le volet MyFirstRunbook-Python3.

  2. Ajoutez le code suivant pour vous authentifier dans Azure :

#!/usr/bin/env python3
from azure.identity import DefaultAzureCredential
from azure.mgmt.compute import ComputeManagementClient

SUBSCRIPTION_ID="YOUR_SUBSCRIPTION_ID"

azure_credential = DefaultAzureCredential()

import os
import requests
# printing environment variables
endpoint = os.getenv('IDENTITY_ENDPOINT')+"?resource=https://management.azure.com/"
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER' : identityHeader,
'Metadata' : True
}
response = requests.get(endpoint, headers)
print(response.text)

Ajouter du code pour créer le client Compute Python et démarrer la machine virtuelle

Pour utiliser des machines virtuelles Azure, créez une instance du client Compute Azure pour Python.

# Initialize client with the credential and subscription.
compute_client = ComputeManagementClient(
    azure_credential,
    SUBSCRIPTION_ID
)

print('\nStart VM')
async_vm_start = compute_client.virtual_machines.begin_start(
    "MyResourceGroup", "TestVM")
async_vm_start.wait()
print('\nFinished start.')

MyResourceGroup correspondant au nom du groupe de ressource qui contient la machine virtuelle, et TestVM au nom de la machine virtuelle que vous souhaitez démarrer.

Testez et exécutez une nouvelle fois le Runbook pour vérifier qu’il démarre la machine virtuelle.

Utilisez les paramètres d’entrée

Actuellement, le runbook utilise des valeurs codées en dur pour le nom du groupe de ressources et celui de la machine virtuelle. Nous ajoutons maintenant du code pour obtenir ces valeurs des paramètres d’entrée.

Utilisez la variable sys.argv pour obtenir les valeurs du paramètre. Ajoutez le code suivant au Runbook à la suite des autres instructions import :

import sys

resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])

Cette action importe le module sys, puis crée deux variables pour stocker le nom du groupe de ressources et celui de la machine virtuelle. Veuillez noter que l’élément sys.argv[0] dans la liste des arguments correspond au nom du script et n’est pas entré par l’utilisateur.

Vous pouvez maintenant modifier les deux dernières lignes du runbook de façon à utiliser les valeurs du paramètre d’entrée à la place des valeurs codées en dur :

async_vm_start = compute_client.virtual_machines.begin_start(
    resource_group_name, vm_name)
async_vm_start.wait()

Lorsque vous démarrez un runbook Python (dans le volet Test ou en tant que runbook publié), vous pouvez entrer les valeurs des paramètres dans la page Démarrer le runbook sous Paramètres.

Après avoir entré une valeur dans la première boîte, une deuxième apparaît, et ainsi de suite. Vous pouvez entrer autant de valeurs de paramètres que nécessaire.

Les valeurs sont disponibles pour le script dans le tableau sys.argv, comme dans le code qui vient d’être ajouté.

Entrez le nom du groupe de ressources comme valeur du premier paramètre, et le nom de la machine virtuelle à démarrer comme valeur du deuxième paramètre.

Enter parameter values

Sélectionnez OK pour démarrer le runbook. Le Runbook s’exécute et démarre la machine virtuelle que vous avez spécifiée.

Gestion des erreurs dans Python

Vous pouvez également utiliser les conventions suivantes pour récupérer différents flux à partir de vos runbooks Python, notamment les flux AVERTISSEMENT, ERREUR et DÉBOGAGE.

print("Hello World output")
print("ERROR: - Hello world error")
print("WARNING: - Hello world warning")
print("DEBUG: - Hello world debug")
print("VERBOSE: - Hello world verbose")

L’exemple suivant illustre cette Convention utilisée dans un bloc try...except.

try:
    raise Exception('one', 'two')
except Exception as detail:
    print ('ERROR: Handling run-time error:', detail)

Étapes suivantes