Interactuar con Runbooks

Ejecutar runbooks y consultar su estado usando la API de RealmJoin

Información general

RealmJoin te permite usar Azure Automation Runbooks para automatizar las operaciones diarias de tu entorno. Consulta Runbooks para obtener más información.

La API de RealmJoin te permite iniciar runbooks desde tu aplicación y consultar la ejecución correcta de ejecuciones activadas previamente. Consulta la descripción Swagger de RealmJoin para ver qué operaciones son compatibles actualmente.

Las siguientes secciones explican cómo usar la API de RealmJoin para iniciar y seguir trabajos de runbook. Se asume que ya has conectado una cuenta de Azure Automation a RealmJoin Portal. Además, asegúrate de autenticar cada solicitud a la API de RealmJoin usando un encabezado http Authorization adecuado.

¿Cómo maneja Azure Automation los runbooks?

Azure Automation tiene un enfoque de procesamiento por lotes con respecto a los runbooks. Cuando activas la ejecución de un runbook, se crea un trabajo para ese runbook y se pone en cola para su ejecución.

Así que, en general, un runbook no se iniciará inmediatamente. Además, pueden existir varios trabajos del mismo runbook al mismo tiempo en distintos estados de ejecución.

Cada trabajo tiene un conjunto de parámetros (entradas) que se pasan al script del runbook. Esto puede ser, por ejemplo, dos variables como $username y $newEmailAddress si se supone que el runbook debe agregar un alias de correo electrónico al buzón de un usuario.

Cada trabajo tiene un estado que representa su estado actual de ejecución, consulta Microsoft Docs. Nos centraremos en En cola, En ejecución, Completado y Fallido en este documento. Ten en cuenta que esto es una simplificación para facilitar la comprensión.

Iniciar un trabajo de Runbook

La API de RealmJoin ofrece dos endpoints para activar runbooks.

run ejecutará un runbook de forma síncrona y solo devolverá/finalizará cuando el runbook realmente se haya completado o haya fallado. Este endpoint devuelve directamente el estado de éxito y la salida del trabajo de runbook asociado.

start tomará los mismos parámetros que run pero funciona de forma asíncrona. Devolverá tan pronto como un trabajo de runbook quede en cola. Devolverá el jobID para facilitar el seguimiento del nuevo trabajo.

Nomenclatura de runbooks

Los runbooks se identifican por su nombre en Azure Automation. En resumen:

  • ¿Se sincroniza desde el repositorio GitHub de RealmJoin? Añade rjgit-como prefijo

  • Ya sea org_, device_, group_, user_ como ámbito (exactamente uno de esos)

  • Una categoría, como general_o security_

  • El nombre del runbook, separado por _ como add-xyz-exception

El resultado en este caso sería: rjgit-org_security_add-xyz-exception

Vea Convenciones de nombres para más detalles.

Ejemplo

Supongamos la siguiente situación:

  • Tienes las credenciales de la API de RealmJoin y las has codificado a dC0xMjM0MTIzNDpteVMzY3JldCE= (Base64)

  • Quieres iniciar el runbook rjgit-user_security_revoke-or-restore-access para bloquear el inicio de sesión de un usuario específico

  • Los parámetros para el runbook (PowerShell) son:

Usaremos el run endpoint para saber de inmediato si el trabajo fue exitoso.

Construyamos los solicitud:

Encabezados:

Solicitud / URI:

Cuerpo (en notación JSON):

La solicitud tardará un poco, ya que espera a que se ejecute el trabajo. Asegúrate de ajustar el tiempo de espera de tus clientes HTTP en consecuencia. De lo contrario, intenta usar el start endpoint, que devolverá inmediatamente.

La respuesta contendrá el jobID, el estado (Fallido o Completado) y todos los flujos de salida del runbook.

Respuesta:

Estado HTTP: 200 (OK)

Cuerpo (en notación JSON):

Los flujos de salida se separan en distintos canales (streamTypes): Salida, Verbose, Error. Esto permite filtrar errores o reducir la salida solo a la información relevante mostrando solo Salida.

Puedes obtener estos flujos después de que un runbook haya terminado usando el /runbook/jobs/{jobID}/output/streams endpoint. (ver más abajo)

Consultar el estado y la salida de un trabajo

Si ya se ha creado un trabajo, puedes usar la API de RealmJoin para consultar su estado y su salida.

Consulta del estado del trabajo

Usa /runbook/jobs/{jobID}/status para consultar el estado actual.

Vea Autenticación sobre cómo crear un encabezado de autorización, lo siguiente es solo un ejemplo.

Supón que el jobID es 1234545e-7a24-436a-90c9-6056b512345

Solicitud

Encabezados:

Solicitud / URI:

Esta solicitud no tiene cuerpo.

Respuesta

Http Status 200 (OK)

Cuerpo (texto plano)

Otros posibles estados incluyen New, Fallido, En ejecución. Consulta posibles estados de Runbook.

Lectura de la salida del trabajo

Usa /runbook/jobs/{jobID}/output/text para obtener una representación simple en texto plano de la salida de un runbook. Esto no incluirá el Verbose y Error flujo. Consulta lectura de flujos para leer otros flujos. Excepciones se manejan por separado.

Vea Autenticación sobre cómo crear un encabezado de autorización, lo siguiente es solo un ejemplo.

Supón que el jobID es 1234545e-7a24-436a-90c9-6056b512345

Solicitud

Encabezados:

Solicitud / URI:

Esta solicitud no tiene cuerpo.

Respuesta

Http Status 200 (OK)

Cuerpo (texto plano)

Lectura de flujos específicos

Usa /runbook/jobs/{jobID}/output/streams para obtener una representación JSON completa de la salida de un runbook. De esta forma puedes acceder al Salida, Verbose y Error flujo. Excepciones se manejan por separado.

Vea Autenticación sobre cómo crear un encabezado de autorización, lo siguiente es solo un ejemplo.

Supón que el jobID es 1234545e-7a24-436a-90c9-6056b512345

Solicitud (todos los flujos)

Encabezados:

Solicitud / URI:

Esta solicitud no tiene cuerpo.

Respuesta

Http Status 200 (OK)

Cuerpo (JSON, matriz de mensajes)

Consulta más abajo para leer mensajes de error interruptivos y excepciones

Para recibir solo un único flujo, por ejemplo Verbose, puedes añadir un filtro a la solicitud agregando ?streamTypes=Verbose. También puedes filtrar por Salida y Error.

Solicitud (filtrar por un solo flujo)

Encabezados:

Solicitud / URI:

Esta solicitud no tiene cuerpo.

Respuesta

Http Status 200 (OK)

Cuerpo (JSON, matriz de mensajes)

Lectura de excepciones

Usa /runbook/jobs/{jobID}/exception/text para obtener una representación simple en texto plano del mensaje de excepción de un runbook (si existe). Esto no incluirá los Salida, Verbose y Error flujos. Consulta lectura de flujos para leer otros flujos.

Las excepciones se escriben cuando ocurren errores interruptivos en la ejecución del script de PowerShell asociado con el runbook. Este endpoint solo leerá el mensaje en texto plano y no incluye detalles técnicos, como en qué línea de código se detuvo el script.

En nuestro ejemplo, un error interruptivo fue causado por throw "Exception".

Vea Autenticación sobre cómo crear un encabezado de autorización, lo siguiente es solo un ejemplo.

Supón que el jobID es 1234545e-7a24-436a-90c9-6056b512345

Solicitud

Encabezados:

Solicitud / URI:

Esta solicitud no tiene cuerpo.

Respuesta

Http Status 200 (OK)

Cuerpo (texto plano)

Última actualización

¿Te fue útil?