Interagindo com Runbooks

Executar runbooks e consultar o respetivo estado usando a API do RealmJoin

Overview

RealmJoin permite que você use Azure Automation Runbooks para automatizar as operações diárias em seu ambiente. Veja Runbooks para mais informações.

A API do RealmJoin permite que você inicie runbooks a partir da sua aplicação, para consultar a execução bem-sucedida de execuções acionadas anteriormente. Veja a descrição Swagger do RealmJoin para ver quais operações são atualmente suportadas.

As seções a seguir explicam como usar a API do RealmJoin para iniciar e acompanhar trabalhos de runbook. Presume-se que você já tenha conectado uma conta do Azure Automation ao Portal do RealmJoin. Além disso, certifique-se de autenticar cada solicitação à API do RealmJoin usando um cabeçalho HTTP Authorization apropriado.

Como o Azure Automation lida com runbooks?

O Azure Automation tem uma abordagem de processamento em lote em relação a runbooks. Quando você aciona a execução de um runbook, um trabalho é criado para esse runbook e enfileirado para execução.

Portanto, em geral, um runbook não será iniciado imediatamente. Além disso, vários trabalhos para o mesmo runbook podem existir ao mesmo tempo em diferentes estados de execução.

Cada trabalho tem um conjunto de parâmetros (entradas) que são passados para o script do runbook. Isso pode, por exemplo, ser duas variáveis como $username e $newEmailAddress se o runbook tiver como objetivo adicionar um eMail-Alias à caixa de correio de um usuário.

Cada trabalho tem um status que representa seu estado atual de execução, veja Microsoft Docs. Vamos nos concentrar em Queued, Running, Completed e Failed neste documento. Tenha em mente que isso é uma simplificação para fins de compreensão mais fácil.

Iniciando um Trabalho de Runbook

A API do RealmJoin oferece dois endpoints para acionar runbooks.

run executará um runbook de forma síncrona e só retornará/terminará quando o runbook for realmente concluído ou falhar. Este endpoint retorna diretamente o estado de sucesso e a saída do trabalho de runbook associado.

start usará os mesmos parâmetros que run mas funciona de forma assíncrona. Ele retornará assim que um trabalho de runbook for enfileirado. Ele retornará o jobID para permitir o fácil rastreamento do novo trabalho.

Nomeação de runbooks

Os runbooks são endereçados pelo nome no Azure Automation. Em resumo:

  • Ele é sincronizado do repositório GitHub do RealmJoin? Adicione rjgit-como prefixo

  • Ou org_, device_, group_, user_ como escopo (exatamente um deles)

  • Uma categoria, como general_ou security_

  • O nome do runbook, separado por _ como add-xyz-exception

O resultado, neste caso, seria: rjgit-org_security_add-xyz-exception

Ver Convenções de Nomeação para mais detalhes.

Exemplo

Vamos assumir a seguinte situação:

  • Você tem suas credenciais da API do RealmJoin e as codificou em dC0xMjM0MTIzNDpteVMzY3JldCE= (Base64)

  • Você deseja iniciar o runbook rjgit-user_security_revoke-or-restore-access para bloquear o login de um usuário específico

  • Os parâmetros para o runbook (PowerShell) são:

Usaremos o run endpoint para saber imediatamente se o trabalho foi bem-sucedido.

Vamos construir o solicitação:

Cabeçalhos:

Solicitação / URI:

Corpo (em notação JSON):

A solicitação levará algum tempo, pois aguarda a execução do trabalho. Certifique-se de ajustar adequadamente o timeout dos seus clientes HTTP. Caso contrário, tente usar o endpoint start que retornará imediatamente.

A resposta conterá o jobID, o status (Failed ou Completed) e todos os fluxos de saída do runbook.

Resposta:

Status HTTP: 200 (OK)

Corpo (em notação JSON):

Os fluxos de saída são separados em diferentes canais (streamTypes): Saída, Verbose, Error. Isso permite filtrar por erros ou reduzir a saída apenas às informações relevantes, mostrando apenas Saída.

Você pode obter esses fluxos depois que um runbook terminar usando o /runbook/jobs/{jobID}/output/streams endpoint. (veja abaixo)

Consultando o status e a saída de um trabalho

Se um trabalho já tiver sido criado, você pode usar a API do RealmJoin para consultar seu estado e saída.

Consultando o status do trabalho

Use /runbook/jobs/{jobID}/status para consultar o status atual.

Ver Autenticação sobre como criar um cabeçalho de Autorização, o seguinte é apenas um exemplo.

Suponha que o jobID seja 1234545e-7a24-436a-90c9-6056b512345

Pedido

Cabeçalhos:

Solicitação / URI:

Esta solicitação não tem corpo.

Resposta

Http Status 200 (OK)

Corpo (Texto simples)

Outros estados possíveis incluem New, Failed, Running. Veja estados possíveis do Runbook.

Lendo a saída do trabalho

Use /runbook/jobs/{jobID}/output/text para obter uma representação simples em texto puro da saída de um runbook. Isso não incluirá o Verbose e Error fluxo. Veja lendo fluxos para ler outros fluxos. Exceções são tratados separadamente.

Ver Autenticação sobre como criar um cabeçalho de Autorização, o seguinte é apenas um exemplo.

Suponha que o jobID seja 1234545e-7a24-436a-90c9-6056b512345

Pedido

Cabeçalhos:

Solicitação / URI:

Esta solicitação não tem corpo.

Resposta

Http Status 200 (OK)

Corpo (Texto simples)

Lendo fluxos específicos

Use /runbook/jobs/{jobID}/output/streams para obter uma representação JSON abrangente da saída de um runbook. Dessa forma, você pode acessar o Saída, Verbose e Error fluxo. Exceções são tratados separadamente.

Ver Autenticação sobre como criar um cabeçalho de Autorização, o seguinte é apenas um exemplo.

Suponha que o jobID seja 1234545e-7a24-436a-90c9-6056b512345

Solicitação (todos os fluxos)

Cabeçalhos:

Solicitação / URI:

Esta solicitação não tem corpo.

Resposta

Http Status 200 (OK)

Corpo (JSON, matriz de mensagens)

Veja abaixo para ler mensagens de erro interruptivas e exceções

Para receber apenas um único fluxo, por exemplo Verbose, você pode adicionar um filtro à solicitação adicionando ?streamTypes=Verbose. Você também pode filtrar por Saída e Error.

Solicitação (filtrar por um único fluxo)

Cabeçalhos:

Solicitação / URI:

Esta solicitação não tem corpo.

Resposta

Http Status 200 (OK)

Corpo (JSON, matriz de mensagens)

Lendo exceções

Use /runbook/jobs/{jobID}/exception/text para obter uma representação simples em texto puro da mensagem de exceção de um runbook (se houver). Isso não incluirá os Saída, Verbose e Error fluxos. Veja lendo fluxos para ler outros fluxos.

As exceções são registradas quando erros interruptivos ocorrem na execução do script PowerShell associado ao runbook. Este endpoint lerá apenas a mensagem em texto puro e não inclui detalhes técnicos, como em qual linha de código o script parou.

Em nosso exemplo, um erro interruptivo foi causado por throw "Exception".

Ver Autenticação sobre como criar um cabeçalho de Autorização, o seguinte é apenas um exemplo.

Suponha que o jobID seja 1234545e-7a24-436a-90c9-6056b512345

Pedido

Cabeçalhos:

Solicitação / URI:

Esta solicitação não tem corpo.

Resposta

Http Status 200 (OK)

Corpo (Texto simples)

Última atualização

Isto foi útil?