Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce tutoriel vous guide tout au long de la création d’un runbook Python 3.8 dans Azure Automation. Les runbooks Python 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
Prerequisites
Pour suivre ce didacticiel, vous avez besoin des éléments suivants :
Un abonnement Azure. Si vous n’en avez pas encore, vous pouvez activer vos avantages d’abonné MSDN ou vous inscrire à un compte gratuit.
Un compte Automation pour héberger le runbook et s’authentifier auprès des ressources Azure à l’aide d’Identités Gérées. Une identité managée est automatiquement créée pour vous lorsque vous créez le compte Automation.
Une machine virtuelle Azure. Dans ce tutoriel, vous allez démarrer et arrêter cet ordinateur. Il ne doit donc pas s’agir d’une machine virtuelle de production.
Créer un manuel d'exécution
Vous commencez par créer un runbook simple qui génère le texte Hello World.
Dans le portail Azure, ouvrez votre compte Automation.
La page du compte Automation vous donne une vue rapide des ressources de ce compte. Vous devriez déjà avoir des ressources. La plupart de ces ressources sont les modules qui sont automatiquement inclus dans un nouveau compte Automation.
Vous devez également avoir une identité managée activée qui est mentionnée dans les conditions préalables. Vous pouvez vérifier qu’en affichant la ressource Identity sous Paramètres du compte.
Sélectionnez Runbooks sous Process Automation pour ouvrir la liste des runbooks.
Sélectionnez Créer un livre de procédures pour créer un livre de procédures.
Donnez au runbook le nom MyFirstRunbook-Python.
Sélectionnez Python pour le type de Runbook.
Sélectionnez Python 3.8 pour la version runtime.
Sélectionnez Créer pour créer le runbook et ouvrir l’éditeur textuel.
Ajouter du code au guide d'exécution
Vous 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 souhaitez le tester pour vous assurer qu’il fonctionne correctement. Lorsque vous testez un runbook, vous exécutez sa version brouillon et voyez sa sortie de manière interactive.
Sélectionnez Le volet Test pour ouvrir le volet Test .
Sélectionnez Démarrer pour démarrer le test. Cette option doit être la seule option activée.
Un runbook job est créé et son statut est affiché. 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.
Lorsque la tâche du Runbook est terminée, sa sortie s'affiche. Dans ce cas, vous devriez voir
Hello World.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. Vous devez le publier avant de 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.
Sélectionnez Publier pour publier le runbook, puis Oui lorsque vous y êtes invité.
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é.
Sélectionnez le nom MyFirstRunbook-Python dans la liste, vous revenez dans le volet MyFirstRunbook-Python .
Les options situées en haut vous permettent de démarrer le runbook, d’afficher le runbook, de modifier le runbook, de planifier son démarrage à un moment donné à l’avenir et d’autres actions.
Sélectionnez Démarrer , puis ok lorsque le volet Démarrer le Runbook s’ouvre.
Le volet Tâche s’ouvre pour la tâche du runbook qui vient d’être créée. Vous pouvez fermer ce volet, mais nous allons le garder ouvert, afin que vous puissiez surveiller la progression du travail.
L’état du travail est affiché dans le champ État sous Essentials. Les valeurs indiquées correspondent aux valeurs d’état affichées lorsque vous avez testé le runbook.
Une fois que l'état du runbook indique terminé, sélectionnez l'onglet Sortie. Dans l'onglet Sortie, vous pouvez voir
Hello World.Fermez l’onglet Sortie .
Sélectionnez l’onglet Tous les journaux pour afficher les flux de la tâche du runbook. Vous ne devez voir
Hello Worldque 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.Fermez le volet Travaux pour revenir au volet MyFirstRunbook-Python .
Sélectionnez la ressource Tâches pour ouvrir la page ressource Tâches pour ce runbook. Cette page répertorie toutes les tâches créées par ce runbook. Vous ne devez voir qu’un seul travail répertorié puisque vous n’avez exécuté le travail qu’une seule fois.
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 tout travail créé pour un runbook particulier.
Ajouter l’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, le script doit s’authentifier.
La méthode recommandée pour l’authentification consiste à utiliser l’identité managée. Lorsque vous créez un compte Azure Automation, une identité managée est automatiquement créée pour vous.
Pour utiliser ces exemples, ajoutez les packages suivants dans la ressource Packages Python du compte Automation. Vous pouvez ajouter les fichiers WHL pour ces packages avec ces liens.
Lorsque vous ajoutez ces packages, sélectionnez une version runtime qui correspond à votre runbook.
Note
Le code suivant a été testé avec la version 3.8 du runtime.
Identité managée
Pour utiliser l’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é et définissez le statut 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 » sur le groupe de ressources contenant la machine virtuelle. Pour plus d’informations, consultez Affecter des rôles Azure à l’aide du portail Azure
Avec le rôle d’identité de gestion configuré, vous pouvez commencer à ajouter du code.
Ouvrez l’éditeur de texte en sélectionnant Modifier dans le volet MyFirstRunbook-Python .
Ajoutez le code suivant pour l’authentification auprès d’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 un client de calcul Python et démarrer la machine virtuelle
Pour utiliser des machines virtuelles Azure, créez une instance du client Azure Compute 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.')
Où MyResourceGroup est le nom du groupe de ressources qui contient la machine virtuelle et TestVM le nom de la machine virtuelle que vous souhaitez démarrer.
Testez et réexécutez le runbook pour voir qu’il démarre la machine virtuelle.
Utiliser les paramètres d’entrée
Le runbook utilise actuellement des valeurs codées en dur pour les noms du groupe de ressources et de la machine virtuelle. Nous allons maintenant ajouter du code qui obtient ces valeurs à partir des paramètres d’entrée.
Vous utilisez la sys.argv variable pour obtenir les valeurs des paramètres. Ajoutez le code suivant au runbook immédiatement après les autres import instructions :
import sys
resource_group_name = str(sys.argv[1])
vm_name = str(sys.argv[2])
Ce code importe le sys module et crée deux variables pour contenir le groupe de ressources et les noms de machines virtuelles. Notez que l’élément de la liste d’arguments, sys.argv[0]est le nom du script et n’est pas entré par l’utilisateur.
Vous pouvez maintenant modifier les deux dernières lignes du runbook pour utiliser les valeurs des paramètres d’entrée au lieu d’utiliser 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, à partir du 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.
Une fois que vous avez commencé à entrer une valeur dans la première zone, une seconde apparaît, et ainsi de suite, afin que vous puissiez entrer autant de valeurs de paramètre que nécessaire.
Les valeurs sont disponibles pour le script dans le sys.argv tableau comme dans le code que vous venez d’ajouter.
Entrez le nom de votre 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.
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 avertissement, erreur et flux DEBUG.
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 montre cette convention utilisée dans un try...except bloc.
try:
raise Exception('one', 'two')
except Exception as detail:
print ('ERROR: Handling run-time error:', detail)
Étapes suivantes
Pour en savoir plus sur les types de runbooks, leurs avantages et leurs limitations, consultez les types de runbooks Azure Automation.
Pour en savoir plus sur le développement pour Azure avec Python, consultez Azure pour les développeurs Python.
Pour afficher les exemples de runbooks Python 3, consultez le référentiel GitHub Azure Automation .