DevSecOpsARTIGO

Integração ServiceNow Change Management com Azure Pipelines

Leonardo Matsumota apresenta neste artigo, o ServiceNow, uma solução completa de IT Service Management e mostra como criar uma nova instância no ServiceNow.

Integração ServiceNow Change Management com Azure Pipelines
Imagem: Leonardo Matsumota

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.

Leonardo MatsumotaAutor

Leonardo possui mais de 17 anos de experiência em projetos de TI, Agile, desenvolvimento de sistemas web, Business Inteligence, Data Mining, Machine Learning e Dashboards. Especialista em Governância: Agile (Scrum), SAFe, PMBOK, Kanban e Lean Six Sigma. Mestre em Engenharia de Produção, MBA em Gestão Empresarial com ênfase em Gestão de Projetos e bacharelado em Ciência da Computação. Fluente em Inglês e espanhol avançado.

Ver perfil