Interaction avec les runbooks
Exécutez des runbooks et interrogez leur état à l’aide de l’API de RealmJoin
Aperçu
RealmJoin vous permet d'utiliser des runbooks Azure Automation pour automatiser les opérations quotidiennes dans votre environnement. Voir Runbooks pour plus d'informations.
L'API de RealmJoin vous permet de démarrer des runbooks depuis votre application, afin de vérifier si des exécutions précédemment déclenchées se sont terminées avec succès. Voir la référence de l’API de RealmJoin pour voir quelles opérations sont actuellement prises en charge.
Les sections suivantes expliquent comment utiliser l'API de RealmJoin pour démarrer et suivre des tâches de runbook. Il est supposé que vous avez déjà connecté un compte Azure Automation à RealmJoin Portal. Assurez-vous également de authentifier chaque requête envoyée à l’API de RealmJoin à l’aide d’un en-tête http Authorization approprié.
Comment Azure Automation gère-t-il les runbooks ?
Azure Automation adopte une approche de traitement par lots pour les runbooks. Lorsque vous déclenchez l'exécution d'un runbook, une tâche est créée pour ce runbook et mise en file d'attente pour exécution.
En général, un runbook ne démarre donc pas immédiatement. De plus, plusieurs tâches du même runbook peuvent exister en même temps à différents états d'exécution.
Chaque tâche possède un ensemble de paramètres (entrées) transmis au script du runbook. Cela peut par exemple être deux variables comme $username et $newEmailAddress si le runbook est censé ajouter un alias e-mail à la boîte aux lettres d'un utilisateur.
Chaque tâche a un statut qui représente son état d'exécution actuel, voir Microsoft Docs. Nous nous concentrerons sur En file d'attente, En cours d'exécution, Terminé et Échoué dans ce document. Sachez qu'il s'agit d'une simplification pour faciliter la compréhension.
Démarrage d'une tâche de runbook
L'API de RealmJoin propose deux points de terminaison pour déclencher des runbooks.
run exécutera un runbook de manière synchrone et ne renverra/terminera son traitement que lorsque le runbook sera réellement terminé ou aura échoué. Ce point de terminaison renvoie directement l'état de réussite et la sortie de la tâche de runbook associée.
start prendra les mêmes paramètres que run mais fonctionne de manière asynchrone. Il renverra dès qu'une tâche de runbook est mise en file d'attente. Il renverra le jobID afin de faciliter le suivi de la nouvelle tâche.
Nom des runbooks
Les runbooks sont adressés par leur nom dans Azure Automation. En bref :
Est-il synchronisé depuis le dépôt GitHub de RealmJoin ? Ajoutez
rjgit-comme préfixeSoit
org_,device_,group_,user_comme périmètre (exactement l'un de ceux-ci)Une catégorie, comme
general_ousecurity_Le nom du runbook, séparé par
_commeadd-xyz-exception
Le résultat dans ce cas serait : rjgit-org_security_add-xyz-exception
Voir Conventions de nommage pour plus de détails.
Exemple
Supposons la situation suivante :
Vous avez vos identifiants de l’API de RealmJoin et les avez encodés en
dC0xMjM0MTIzNDpteVMzY3JldCE=(Base64)Vous souhaitez démarrer le runbook
rjgit-user_security_revoke-or-restore-accesspour bloquer la connexion d'un utilisateur spécifiqueLes paramètres du runbook (PowerShell) sont :
$UserName = "someone@contoso.com"$Revoke = $true
Nous utiliserons le run point de terminaison pour savoir immédiatement si la tâche a réussi.
Construisons le demande:
En-têtes :
Requête / URI :
Corps (en notation JSON) :
La requête prendra un certain temps, car elle attend que la tâche s'exécute. Veuillez vous assurer d'adapter en conséquence le délai d'attente de votre client HTTP. Sinon, essayez d'utiliser le start point de terminaison, qui renverra immédiatement.
La réponse contiendra le jobID, les statut (Échoué ou Terminé) et tous les flux de sortie du runbook.
Réponse:
Statut Http : 200 (OK)
Corps (en notation JSON) :
Les flux de sortie sont séparés en différents canaux (streamTypes): Sortie, Verbeux, Erreur. Cela permet de filtrer les erreurs ou de réduire la sortie uniquement aux informations pertinentes en n'affichant que Sortie.
Vous pouvez obtenir ces flux une fois qu'un runbook est terminé en utilisant le /runbook/jobs/{jobID}/output/streams point de terminaison. (voir ci-dessous)
Interrogation du statut et de la sortie d'une tâche
Si une tâche a déjà été créée, vous pouvez utiliser l'API de RealmJoin pour interroger son état et sa sortie.
Interrogation du statut de la tâche
Utilisez /runbook/jobs/{jobID}/status pour interroger le statut actuel.
Voir Authentification sur la création d'un en-tête Authorization, ce qui suit n'est qu'un exemple.
Supposons le jobID être 1234545e-7a24-436a-90c9-6056b512345
Demande
En-têtes :
Requête / URI :
Cette requête n'a pas de corps.
Réponse
Statut HTTP 200 (OK)
Corps (texte brut)
Les autres états possibles incluent Nouveau, Échoué, En cours d'exécution. Voir états possibles du runbook.
Lecture de la sortie de la tâche
Utilisez /runbook/jobs/{jobID}/output/text pour obtenir une représentation simple en texte brut de la sortie d'un runbook. Cela n'inclura pas le Verbeux et Erreur flux. Voir lecture des flux pour lire d'autres flux. Exceptions sont gérés séparément.
Voir Authentification sur la création d'un en-tête Authorization, ce qui suit n'est qu'un exemple.
Supposons le jobID être 1234545e-7a24-436a-90c9-6056b512345
Demande
En-têtes :
Requête / URI :
Cette requête n'a pas de corps.
Réponse
Statut HTTP 200 (OK)
Corps (texte brut)
Lecture de flux spécifiques
Utilisez /runbook/jobs/{jobID}/output/streams pour obtenir une représentation JSON complète de la sortie d'un runbook. Ainsi, vous pouvez accéder au Sortie, Verbeux et Erreur flux. Exceptions sont gérés séparément.
Voir Authentification sur la création d'un en-tête Authorization, ce qui suit n'est qu'un exemple.
Supposons le jobID être 1234545e-7a24-436a-90c9-6056b512345
Requête (tous les flux)
En-têtes :
Requête / URI :
Cette requête n'a pas de corps.
Réponse
Statut HTTP 200 (OK)
Corps (JSON, tableau de messages)
Voir ci-dessous pour lire les messages d'erreur bloquants et exceptions
Pour ne recevoir qu'un seul flux, par exemple Verbeux, vous pouvez ajouter un filtre à la requête en ajoutant ?streamTypes=Verbose. Vous pouvez également filtrer pour Sortie et Erreur.
Requête (filtre pour un seul flux)
En-têtes :
Requête / URI :
Cette requête n'a pas de corps.
Réponse
Statut HTTP 200 (OK)
Corps (JSON, tableau de messages)
Lecture des exceptions
Utilisez /runbook/jobs/{jobID}/exception/text pour obtenir une représentation simple en texte brut du message d'exception d'un runbook (s'il est présent). Cela n'inclura pas les Sortie, Verbeux et Erreur flux. Voir lecture des flux pour lire d'autres flux.
Les exceptions sont écrites lorsqu'une erreur bloquante se produit lors de l'exécution du script PowerShell associé au runbook. Ce point de terminaison ne lit que le message en texte brut et n'inclut pas de détails techniques, comme la ligne de code à laquelle le script s'est arrêté.
Dans notre exemple, une erreur bloquante a été causée par throw "Exception".
Voir Authentification sur la création d'un en-tête Authorization, ce qui suit n'est qu'un exemple.
Supposons le jobID être 1234545e-7a24-436a-90c9-6056b512345
Demande
En-têtes :
Requête / URI :
Cette requête n'a pas de corps.
Réponse
Statut HTTP 200 (OK)
Corps (texte brut)
Mis à jour
Ce contenu vous a-t-il été utile ?