Interacción con runbooks
Ejecuta runbooks y consulta su estado mediante la API de RealmJoin
Descripción general
RealmJoin te permite usar Runbooks de Azure Automation para automatizar las operaciones diarias en tu entorno. Consulta Runbooks para más información.
La API de RealmJoin te permite iniciar runbooks desde tu aplicación y consultar la ejecución correcta de ejecuciones desencadenadas previamente. Consulta la descripción de Swagger de RealmJoin para ver qué operaciones están admitidas actualmente.
Las siguientes secciones explican cómo usar la API de RealmJoin para iniciar y hacer seguimiento de trabajos de runbook. Se supone que ya has conectado una cuenta de Azure Automation a RealmJoin Portal. Además, asegúrate de autenticar cada solicitud contra la API de RealmJoin mediante un encabezado HTTP de autorización apropiado.
¿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á de inmediato. 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 Error 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 sincrónica y solo devolverá/finalizará cuando el runbook se haya completado realmente 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á la respuesta en cuanto 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 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 nomenclatura para más detalles.
Ejemplo
Supongamos la siguiente situación:
Tiene sus credenciales de la API de RealmJoin y las ha codificado en
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 del runbook (PowerShell) son:
$UserName = "someone@contoso.com"$Revoke = $true
Usaremos el run endpoint para saber de inmediato si el trabajo tuvo éxito.
Construyamos el solicitar:
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 adaptar el tiempo de espera de tu cliente HTTP en consecuencia. De lo contrario, prueba a usar el start endpoint, que devolverá la respuesta de inmediato.
La respuesta contendrá el jobID, el estado (Error 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, Detallado, ErrorEsto permite filtrar los errores o reducir la salida solo a la información relevante mostrando únicamente Salida.
Puedes obtener estos flujos después de que termine un runbook usando el /runbook/jobs/{jobID}/output/streams endpoint. (consulta abajo)
Consultar el estado y la salida de un trabajo
Si un trabajo ya se ha creado, puedes usar la API de RealmJoin para consultar su estado y salida.
Consultar el estado del trabajo
Use /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
Estado HTTP 200 (OK)
Cuerpo (texto plano)
Otros estados posibles incluyen Nuevo, Error, En ejecución. Véase posibles estados del runbook.
Leer la salida del trabajo
Use /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 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
Estado HTTP 200 (OK)
Cuerpo (texto plano)
Leer flujos específicos
Use /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, Detallado 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
Estado HTTP 200 (OK)
Cuerpo (JSON, matriz de mensajes)
Consulta abajo para leer los mensajes de error que interrumpen la ejecución 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 y Error.
Solicitud (filtrar para un solo flujo)
Encabezados:
Solicitud / URI:
Esta solicitud no tiene cuerpo.
Respuesta
Estado HTTP 200 (OK)
Cuerpo (JSON, matriz de mensajes)
Leer excepciones
Use /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, Detallado y Error flujos. Consulta lectura de flujos para leer otros flujos.
Las excepciones se escriben cuando se producen errores que interrumpen 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 que interrumpió la ejecución 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
Estado HTTP 200 (OK)
Cuerpo (texto plano)
Última actualización
¿Te fue útil?