Interagir avec les Runbooks

Exécuter des runbooks et interroger leur statut à l’aide de l’API RealmJoin

Overview

RealmJoin vous permet d’utiliser Azure Automation Runbooks 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 l’exécution réussie des exécutions déclenchées précédemment. Voir la description Swagger 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 vous authentifier pour chaque requête auprès de 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 pour le même runbook peuvent exister en même temps dans 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 Échec dans ce document. Sachez qu’il s’agit d’une simplification destinée à une compréhension plus facile.

Démarrer une tâche de runbook

L’API RealmJoin propose deux points de terminaison pour déclencher des runbooks.

run exécutera un runbook de manière synchrone et ne renverra/ne se terminera que lorsque le runbook sera réellement terminé ou en échec. Ce point de terminaison renvoie directement l’état de succès 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 sera mise en file d’attente. Il renverra le jobID pour permettre un suivi facile de la nouvelle tâche.

Nomination des runbooks

Les runbooks sont appelé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 portée (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 disposez de vos identifiants d’API RealmJoin et vous les avez encodés en dC0xMjM0MTIzNDpteVMzY3JldCE= (Base64)

  • Vous voulez 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 :

Nous utiliserons le run point de terminaison pour savoir immédiatement si la tâche a réussi.

Construisons le demander:

En-têtes :

Requête / URI :

Corps (en notation JSON) :

La requête prendra un certain temps, car elle attend l’exécution de la tâche. Veuillez vous assurer d’adapter le délai d’attente de vos clients HTTP en conséquence. Sinon, essayez d’utiliser le start point de terminaison, qui renverra immédiatement.

La réponse contiendra le jobID, le statut (Échec 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 aux seules 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 RealmJoin pour interroger son état et sa sortie.

Interrogation du statut d’une tâche

Utilisez /runbook/jobs/{jobID}/status pour interroger le statut actuel.

Voir Authentification sur la manière de créer un en-tête Authorization, ce qui suit n’est qu’un exemple.

Supposons que le jobID soit 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)

Parmi les autres états possibles figurent Nouveau, Échec, 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 texte brut simple de la sortie d’un runbook. Cela n’inclura pas le Verbeux et Erreur flux. Voir lecture des flux pour lire les autres flux. Exceptions sont traitées séparément.

Voir Authentification sur la manière de créer un en-tête Authorization, ce qui suit n’est qu’un exemple.

Supposons que le jobID soit 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. De cette façon, vous pouvez accéder au Sortie, Verbeux et Erreur flux. Exceptions sont traitées séparément.

Voir Authentification sur la manière de créer un en-tête Authorization, ce qui suit n’est qu’un exemple.

Supposons que le jobID soit 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 interrompants et les 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 texte brut simple 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 les autres flux.

Les exceptions sont écrites lorsqu’une erreur interrompante se produit dans l’exécution du script PowerShell associé au runbook. Ce point de terminaison ne lira que le message en texte brut et n’inclut pas les détails techniques, comme la ligne de code à laquelle le script s’est arrêté.

Dans notre exemple, une erreur interrompante a été causée par throw "Exception".

Voir Authentification sur la manière de créer un en-tête Authorization, ce qui suit n’est qu’un exemple.

Supposons que le jobID soit 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 ?