Interacción con runbooks
Ejecute runbooks y consulte su estado usando la API de RealmJoin
pestaña Resumen
RealmJoin te permite usar Runbooks de Azure Automation para automatizar las operaciones diarias en tu entorno. Ver Runbooks para más información.
La API de RealmJoin te permite iniciar runbooks desde tu aplicación y consultar la ejecución exitosa de ejecuciones previamente activadas. Ver la descripción Swagger de RealmJoin para ver qué operaciones están actualmente soportadas.
Las siguientes secciones explican cómo usar la API de RealmJoin para iniciar y rastrear trabajos de runbook. Se asume que ya tienes conectada una cuenta de Azure Automation al Portal de RealmJoin. Además, asegúrate de autenticarse en cada solicitud contra la API de RealmJoin usando un encabezado http Authorization apropiado.
¿Cómo maneja Azure Automation los runbooks?
Azure Automation tiene un enfoque de procesamiento por lotes 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 comenzará inmediatamente. Además pueden existir múltiples trabajos para el mismo runbook al mismo tiempo en diferentes 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 como $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, ver Microsoft Docs. Nos centraremos en En cola, En ejecución, Completado como Fallido en este documento. Ten en cuenta que esto es una simplificación con el fin de 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 esté realmente 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 esté en cola. Devolverá el jobID para permitir un seguimiento sencillo del nuevo trabajo.
Nomenclatura de Runbooks
Los runbooks se identifican por su nombre en Azure Automation. En resumen:
¿Se sincroniza desde el repositorio de GitHub de RealmJoin? Añade
prefijo rjgit-como prefijoYa sea
org_,device_,group_,user_como ámbito (exactamente uno de esos)Una categoría, como
general_osecurity_El nombre del runbook, separado por
_comoadd-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:
Usted tiene sus credenciales de la API de RealmJoin y las codificó a
dC0xMjM0MTIzNDpteVMzY3JldCE=(Base64)Quieres iniciar el runbook
rjgit-user_security_revoke-or-restore-accesspara bloquear el inicio de sesión de un usuario específicoLos parámetros para el runbook (PowerShell) son:
$UserName = "[email protected]"$Revoke = $true
Usaremos el run endpoint para saber inmediatamente si el trabajo fue exitoso.
Construyamos los solicitud:
Encabezados:
Solicitud / URI:
Cuerpo (en notación JSON):
La solicitud tomará un tiempo, ya que espera a que el trabajo se ejecute. Por favor asegúrate de adaptar el tiempo de espera (timeout) de tu cliente HTTP en consecuencia. De lo contrario, intenta usar el start endpoint, que devolverá inmediatamente.
La respuesta contendrá el jobIDdurante el despliegue inicial 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 están separados en diferentes canales (streamTypes): Salida, Detallado, Error. Esto permite filtrar errores o reducir la salida solo a la información relevante mostrando únicamente Salida.
Puedes obtener estos flujos después de que un runbook haya finalizado usando el /runbook/jobs/{jobID}/output/streams endpoint. (ver más abajo)
Consulta del estado y salida de un trabajo
Si un trabajo ya ha sido creado, puedes usar la API de RealmJoin para consultar su estado y 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 el jobID sea 1234545e-7a24-436a-90c9-6056b512345
Solicitud
Encabezados:
Solicitud / URI:
Esta solicitud no tiene cuerpo.
Respuesta
Estado HTTP 200 (OK)
Cuerpo (texto plano)
Otros estados posibles incluyen Nuevo, Fallido, En ejecución. Ver 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 Detallado como Error flujo. Ver 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 el jobID sea 1234545e-7a24-436a-90c9-6056b512345
Solicitud
Encabezados:
Solicitud / URI:
Esta solicitud no tiene cuerpo.
Respuesta
Estado HTTP 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 manera puedes acceder al Salida, Detallado como 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 el jobID sea 1234545e-7a24-436a-90c9-6056b512345
Solicitud (todos los flujos)
Encabezados:
Solicitud / URI:
Esta solicitud no tiene cuerpo.
Respuesta
Estado HTTP 200 (OK)
Cuerpo (JSON, arreglo de mensajes)
Ver más abajo para leer mensajes de error interrumpibles y excepciones
Para recibir solo un flujo, por ejemplo Detallado, puedes añadir un filtro a la solicitud agregando ?streamTypes=Verbose. También puedes filtrar por Salida como Error.
Solicitud (filtrar por un solo flujo)
Encabezados:
Solicitud / URI:
Esta solicitud no tiene cuerpo.
Respuesta
Estado HTTP 200 (OK)
Cuerpo (JSON, arreglo 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 está presente). Esto no incluirá los Salida, Detallado como Error flujos. Ver lectura de flujos para leer otros flujos.
Las excepciones se escriben cuando ocurren errores interrumpibles en la ejecución del script 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 interrumpible 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 el jobID sea 1234545e-7a24-436a-90c9-6056b512345
Solicitud
Encabezados:
Solicitud / URI:
Esta solicitud no tiene cuerpo.
Respuesta
Estado HTTP 200 (OK)
Cuerpo (texto plano)
Última actualización
¿Te fue útil?