For the complete documentation index, see llms.txt. This page is also available as Markdown.

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éfixe

  • Soit org_, device_, group_, user_ comme périmètre (exactement l'un de ceux-ci)

  • Une catégorie, comme general_ou security_

  • Le nom du runbook, séparé par _ comme add-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-access pour bloquer la connexion d'un utilisateur spécifique

  • Les 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 ?