DevSecOps

8 fev, 2019

Integração ServiceNow Change Management com Azure Pipelines

100 visualizações
Publicidade

Já abordamos anteriormente os artigos: “Habilitando o Continuous Deployment em empresas regidas por SOX” e “Change Management e DevSOXOps com Azure DevOps” para discutir como as empresas regidas por compliance realizam frequentemente deploys de releases em meio ao processo de change management.

Se por um lado o Azure DevOps possui o Pipeline de Build e Release para criar as esteiras de implementação e gerenciar o ciclo de vida da aplicação, o ServiceNow é uma solução completa de IT Service Management, possuindo, entre outros, o Incident Management, Problem Management, Change and Release Management, Request Management, etc.

A Microsoft lançou a integração do Azure DevOps com o ServiceNow, incluindo a extensão do ServiceNow no pipeline de release.

A ideia é reduzir os riscos associados ao processo de gestão da mudança, incorporando os benefícios de práticas DevOps como redução do tempo de deploy, intervenções manuais e etc, com os controles de gestão de serviços.

E assim podemos, por exemplo, criar uma nova requisição ou atualizar o status de uma change, utilizando o recurso de Gates do Azure DevOps.

Vamos começar pelas instalações! Os primeiros passos, são:

1 – Instalação da extensão do ServiceNow no Azure DevOps.

2 – Solicitar uma nova instância no ServiceNow Developers no ServiceNow. Essa instância deve ser non-developer.

3 – Instalação do App Azure Pipelines no ServiceNow. Requer HI credentials (algum administrador da conta no ServiceNow pode conceder essa permissão) ou ser Technology Partner Program.

E atribuir a permissão de x_mioms_azpipeline.pipelinesExecution ao usuário que será utilizado no Service Connection do Azure DevOps (para criar a conexão com o ServiceNow).

Azure DevOps

Após a instalação do ServiceNow Change Management, crie um novo Service Connection no Azure DevOps (Project Settings > Pipelines > Service connections). Defina as seguintes configurações:

  • Connection name: insira o nome desejado para a conexão com o ServiceNow
  • ServiceNow Url: é a URL da instância que será utilizada
  • Username: usuário criado (ou configurado) com a permissão já definida
  • Password: a senha definida na configuração do usuário (no ServiceNow)

Na Release Pipeline, adicione um pre-deployment gate, incluindo a conexão que acabamos de criar. É o campo ServiceNow connection.

A documentação da Microsoft possui uma descrição para o preenchimento de todos os campos.

Essas configurações permitem a abertura de uma mudança no ServiceNow. Entre os principais inputs:

  • Category: a categoria da mudança (Hardware, Network, Software)
  • Priority: a prioridade da mudança
  • Risk: o risco da mudança
  • Impact: o impacto da mudança no negócio
  • Configuration Item: o item de configuração da mudança

O Gates produz variáveis de output, como por exemplo:

  • CHANGE_REQUEST_NUMBER: número da mudança criada no ServiceNow
  • CHANGE_SYSTEM_ID: ID da mudança criada no ServiceNow

Essa variável de output pode ser acessada utilizando o prefixo PREDEPLOYGATE. Por exemplo, a variável gate-servicenow (definida no campo reference name) pode ser utilizada com a sintaxe $(PREDEPLOYGATE.gate-servicenow.CHANGE_REQUEST_NUMBER).

Ao executar o deploy da release, uma nova mudança será criada no ServiceNow. Como o Success Criteria (tela anterior) está definido em “Implement”, a mudança será liberada quando for alterada para esse status no ServiceNow.

ServiceNow

Então, por exemplo, quando o gestor da mudança acessar a ferramenta do ServiceNow, haverá uma nova mudança em sua fila. Ao colocar a mudança em “Implement”, a condição pre-deployment configurada no Gates será disparada, liberando a release.

Azure DevOps

Em seguida, adicione um novo Agentless job com a extensão Update ServiceNow Change Request ao final do seu release pipeline. Novamente, utilize a conexão criada anteriormente em ServiceNow connection e o status que deseja colocar a mudança após a implementação da release. No meu exemplo, coloquei o status como “Closed”.

Após a execução , o status do Deployment Gates fica disponível e se bem sucedida, a mudança será fechada automaticamente no ServiceNow.