Executar um workflow

Lançar um workflow a partir de um formulário e acompanhá-lo na página de tarefas

  1. O formulário
  2. A tarefa
  3. Aprovações
  4. Interromper

O formulário

Um formulário do tipo workflow lança um workflow, indicado com workflow: tal como se faz com um playbook: pelo seu ficheiro na pasta de workflows, com as suas subpastas (team/deploy-app.yml), ou pelo nome do workflow dentro do ficheiro (deploy-app):

- name: Deploy the app
  type: workflow
  workflow: team/deploy-app.yml
  roles:
    - admin
  fields:
    - name: app_name
      type: text
      default: orders-api

Os campos do formulário chegam a todos os nós como extra vars, e o mesmo acontece com as suas credentials, com os nomes que o formulário lhes dá, tal como as de um formulário multistep chegam aos seus passos:

- name: Provision NAS storage
  type: workflow
  workflow: nas.yml
  credentials:
    ontap: ontap_automation   # every node's playbook gets `ontap`

As credenciais próprias de um nó, definidas no ficheiro do workflow, chegam ao seu playbook com o seu próprio nome e prevalecem quando ambos usam o mesmo nome. No separador Visual de um formulário no designer, Workflow é uma lista dos ficheiros de workflow do designer.

Um nome de ficheiro sozinho também é encontrado numa subpasta, quando só um ficheiro o tem. Dois workflows com o mesmo nome travam um formulário que o indique pelo nome, e o designer avisa quando guarda o segundo: mude o nome de um deles, ou indique o seu ficheiro. Um workflow que não pode ser encontrado termina a tarefa como falhada, com o motivo no seu resultado.


A tarefa

Uma tarefa de workflow corre no servidor do AnsibleForms, e cada nó de playbook corre como uma tarefa própria, filha da tarefa do workflow, tal como os passos de um formulário multistep: um playbook do designer no RTE ou, para um nó com runner:, o modelo ou job desse runner em AWX, AAP, Ascender, Semaphore, Rundeck ou Jenkins (ver Onde corre um nó).

A página da tarefa desenha o workflow em direto: cada nó com a cor do seu estado, as ligações que dispararam e os nós que não vão correr. Os dados no topo indicam o workflow em vez de um playbook.

  • Clique num nó que terminou para abrir o seu resultado num diálogo.
  • O resultado contém o resultado de cada nó sob um cabeçalho WORKFLOW NODE [identifier] (status), pela ordem em que os nós terminaram.
  • Mostrar extravars e Mostrar artefactos, no cabeçalho de cada nó no resultado e no diálogo aberto a partir do grafo, mostram as extravars e os artefactos próprios desse nó ({} quando não tem nenhum), em JSON ou YAML, com um botão Copiar.

As extravars de um nó contêm o que os nós anteriores lhe passaram, e os seus artefactos o que o seu playbook recolheu com set_stats. Os dois botões seguem as opções de função showExtravars e showArtifacts. Os mesmos dados vêm de GET /api/v2/job/{id}/node/{nodeId}, para quem possa ver a tarefa.

A tarefa falha quando um nó falhou e nada tratou essa falha, segundo a regra do AWX; caso contrário, tem sucesso.


Aprovações

Um nó de aprovação retém a tarefa do workflow até alguém lhe responder.

Quando o workflow chega a um nó de aprovação, o estado da tarefa passa a À espera de aprovação: aparece no sino e na página da tarefa, como um ponto de aprovação de um formulário. O nome do nó é o título da aprovação e a sua descrição a mensagem; o resto vem do approval do formulário:

  • os seus roles decidem quem a pode aprovar ou rejeitar, e allowSelf se quem lançou também a pode aprovar;
  • o pedido é enviado para as suas notifications e os seus channels.

Um formulário de workflow sem approval também retém a tarefa num nó de aprovação, mas aí só um administrador a pode aprovar.

  • Aprovada, o nó tem sucesso e o workflow continua pelas suas ligações em caso de sucesso.
  • Rejeitada, o nó falha e o workflow continua pelas suas ligações em caso de falha.
  • Expirada, depois do tempo limite do nó sem resposta, o nó também falha.

Interromper

Interromper numa tarefa de workflow em execução para-a: as tarefas dos nós em execução são interrompidas, não arranca mais nada, e uma aprovação de que esteja à espera é cancelada. Uma tarefa de workflow à espera de uma aprovação também pode ser interrompida.