Implementar em VMs do Azure com grupos de implementação nos Pipelines do Azure
Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019
Em versões anteriores do Azure Pipelines, os aplicativos que precisavam ser implantados em vários servidores exigiam uma quantidade significativa de planejamento e manutenção. A comunicação remota do Windows PowerShell precisava ser habilitada manualmente, as portas necessárias abertas e os agentes de implantação instalados em cada um dos servidores. Os pipelines tinham que ser gerenciados manualmente se uma implantação de implantação fosse necessária.
Todos os desafios acima foram desenvolvidos perfeitamente com a introdução dos Grupos de Implantação.
Um grupo de implantação instala um agente de implantação em cada um dos servidores de destino no grupo configurado e instrui o pipeline de liberação a implantar gradualmente o aplicativo nesses servidores. Vários pipelines podem ser criados para as implantações de implantação para que a versão mais recente de um aplicativo possa ser entregue de forma faseada a vários grupos de usuários para validação de recursos recém-introduzidos.
Nota
Os grupos de implantação são um conceito usado em pipelines clássicos. Se você estiver usando pipelines YAML, consulte Ambientes.
Neste tutorial, ficará a saber mais sobre:
- Provisionando a infraestrutura de VM para o Azure usando um modelo
- Criando um grupo de implantação do Azure Pipelines
- Criando e executando um pipeline de CI/CD para implantar a solução com um grupo de implantação
Pré-requisitos
- Uma conta do Microsoft Azure.
- Uma organização Azure DevOps.
Use o Gerador de Demonstração do Azure DevOps para provisionar o projeto do tutorial em sua organização do Azure DevOps.
Configurando o ambiente de implantação do Azure
Os seguintes recursos são provisionados no Azure usando um modelo ARM:
- Seis servidores Web de máquinas virtuais (VM) com o IIS configurado
- VM do servidor SQL (servidor de banco de dados)
- Azure Network Load Balancer
Clique no link Implantar no Azure abaixo para iniciar o provisionamento de recursos. Forneça todas as informações necessárias e selecione Comprar. Você pode usar qualquer combinação de nomes de usuário e senhas administrativas permitidos, pois eles não são usados novamente neste tutorial. O Nome do Prefixo Env é prefixado a todos os nomes de recursos para garantir que esses recursos sejam gerados com nomes globalmente exclusivos. Tente usar algo pessoal ou aleatório, mas se você vir um erro de conflito de nomenclatura durante a validação ou criação, tente alterar esse parâmetro e executar novamente.
Nota
Leva aproximadamente de 10 a 15 minutos para concluir a implantação. Se você receber algum erro de conflito de nomenclatura, tente alterar o parâmetro fornecido para Env Prefix Name.
Quando a implantação for concluída, você poderá revisar todos os recursos gerados no grupo de recursos especificado usando o portal do Azure. Selecione a VM do servidor de banco de dados com sqlSrv em seu nome para exibir seus detalhes.
Anote o nome DNS. Esse valor é necessário em uma etapa posterior. Você pode usar o botão Copiar para copiá-lo para a área de transferência.
Criando e configurando um grupo de implantação
O Azure Pipelines facilita a organização dos servidores necessários para implantar aplicativos. Um grupo de implantação é uma coleção de máquinas com agentes de implantação. Cada uma das máquinas interage com o Azure Pipelines para coordenar a implantação do aplicativo.
Como não há nenhuma alteração de configuração necessária para o pipeline de compilação, a compilação é acionada automaticamente depois que o projeto é provisionado. Quando você enfileira uma versão mais tarde, essa compilação é usada.
Navegue até o projeto Azure DevOps criado pelo gerador de demonstração.
Em Pipelines, navegue até Grupos de implantação.
Selecione Adicionar um grupo de implantação.
Digite o nome do grupo de implantação de Release e selecione Criar. Um script de registro é gerado. Você pode registrar os servidores de destino usando o script fornecido se estiver trabalhando por conta própria. No entanto, neste tutorial, os servidores de destino são registrados automaticamente como parte do pipeline de versão. A definição de versão usa estágios para implantar o aplicativo nos servidores de destino. Um estágio é um agrupamento lógico das tarefas que define o destino de tempo de execução no qual as tarefas serão executadas. Cada estágio do grupo de implantação executa tarefas nas máquinas definidas no grupo de implantação.
Em Pipelines, navegue até Releases. Selecione o pipeline de versão chamado Grupos de Implantação e selecione Editar.
Selecione a guia Tarefas para exibir as tarefas de implantação no pipeline. As tarefas são organizadas em três estágios chamados fase do agente, fase do grupo de implantação e fase de implantação do IIS.
Selecione a fase Agente. Nesta etapa, os servidores de destino são associados ao grupo de implantação usando a tarefa Implantação do Grupo de Recursos do Azure. Para executar, um pool de agentes e uma especificação devem ser definidos. Selecione o pool do Azure Pipelines e a especificação mais recente do Windows.
Selecione a tarefa Implantação do Grupo de Recursos do Azure. Configure uma conexão de serviço com a assinatura do Azure usada anteriormente para criar infraestrutura. Depois de autorizar a conexão, selecione o grupo de recursos criado para este tutorial.
Essa tarefa será executada nas máquinas virtuais hospedadas no Azure e precisará ser capaz de se conectar novamente a esse pipeline para concluir os requisitos do grupo de implantação. Para proteger a conexão, eles precisarão de um token de acesso pessoal (PAT). Na lista suspensa Configurações do usuário , abra Tokens de acesso pessoal em uma nova guia. A maioria dos navegadores suporta a abertura de um link em uma nova guia através do menu de contexto do botão direito do mouse ou Ctrl+Click.
Na nova guia, selecione Novo token.
Insira um nome e selecione o escopo de acesso completo. Selecione Criar para criar o token. Uma vez criado, copie o token e feche a guia do navegador. Você retorna ao editor do Azure Pipeline.
Em Conexão de serviço do Azure Pipelines, selecione Novo.
Insira a URL de Conexão para a instância atual do Azure DevOps. Este URL é algo como
https://dev.azure.com/[Your account]
. Cole o Token de Acesso Pessoal criado anteriormente e especifique um nome de conexão de Serviço. Selecione Verificar e salvar.Nota
Para registrar um agente, você deve ser membro da função Administrador no pool de agentes. A identidade do administrador do pool de agentes é necessária somente no momento do registro. A identidade do administrador não é persistente no agente e não é usada em nenhuma comunicação subsequente entre o agente e o Azure Pipelines. Depois que o agente é registrado, não há necessidade de renovar o token de acesso pessoal, pois ele é necessário apenas no momento do registro.
Selecione o projeto de equipe atual e o grupo de implantação criado anteriormente.
Selecione o estágio da fase de grupo de implantação. Este estágio executa tarefas nas máquinas definidas no grupo de implantação. Este estágio está vinculado à marca SQL-Svr-DB . Escolha o Grupo de Implantação na lista suspensa.
Selecione o estágio da fase de implantação do IIS. Esta etapa implanta o aplicativo nos servidores Web usando as tarefas especificadas. Esta etapa está ligada à tag WebSrv . Escolha o Grupo de Implantação na lista suspensa.
Selecione a tarefa Desconectar o Balanceador de Carga de Rede do Azure. Como as máquinas de destino estão conectadas ao NLB, essa tarefa desconectará as máquinas do NLB antes da implantação e as reconectará novamente ao NLB após a implantação. Configure a tarefa para usar a conexão do Azure, o grupo de recursos e o balanceador de carga (deve haver apenas um).
Selecione a tarefa Gerenciar do IIS Web App. Essa tarefa é executada nas máquinas de destino de implantação registradas com o grupo de implantação configurado para a tarefa/estágio. Ele cria um aplicativo Web e um pool de aplicativos localmente com o nome PartsUnlimited em execução sob a porta 80
Selecione a tarefa Implantar o IIS Web App. Essa tarefa é executada nas máquinas de destino de implantação registradas com o grupo de implantação configurado para a tarefa/estágio. Ele implanta o aplicativo no servidor IIS usando a Implantação da Web.
Selecione a tarefa Connect Azure Network Load Balancer . Configure a tarefa para usar a conexão do Azure, o grupo de recursos e o balanceador de carga (deve haver apenas um).
Selecione a guia Variáveis e insira os valores das variáveis como abaixo.
Nome da variável Valor da variável DatabaseName PeçasDesenvolvimento ilimitado DBPassword P2ssw0rd@123 DBUserName sqladmin DefaultConnectionString Fonte de dados=[YOUR_DNS_NAME]; Catálogo Inicial = PartsUnlimited-Dev; ID do usuário = sqladmin; Senha=P2ssw0rd@123; MultipleActiveResultSets=False; Tempo limite de conexão=30; ServerName localhost Importante
Certifique-se de substituir o nome DNS do servidor SQL (que você anotou no portal do Azure anteriormente) na variável DefaultConnectionString .
Seu DefaultConnectionString deve ser semelhante a esta cadeia de caracteres depois de substituir o DNS SQL:
Data Source=cust1sqljo5zndv53idtw.westus2.cloudapp.azure.com;Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;
A lista final de variáveis deve ter esta aparência:
Nota
Você pode receber um erro informando que a
DefaultConnectionString
variável deve ser salva como um segredo. Se isso acontecer, selecione a variável e clique no ícone de cadeado que aparece ao lado de seu valor para protegê-la.
Enfileirando uma versão e revisando a implantação
Selecione Salvar e confirme.
Selecione Criar versão e confirme. Siga a versão até a conclusão. A implantação está então pronta para revisão.
No portal do Azure, abra uma das VMs Web no seu grupo de recursos. Você pode selecionar qualquer um que tenha
websrv
no nome.Copie o DNS da VM. O Balanceador de Carga do Azure distribuirá o tráfego de entrada entre instâncias íntegras de servidores definidas em um conjunto com balanceamento de carga. Como resultado, o DNS de todas as instâncias do servidor Web é o mesmo.
Abra uma nova guia do navegador para o DNS da VM. Confirme se o aplicativo implantado está em execução.
Resumo
Neste tutorial, você implantou um aplicativo Web em um conjunto de VMs do Azure usando Pipelines e Grupos de Implantação do Azure. Embora esse cenário abranja um punhado de máquinas, você pode facilmente dimensionar o processo para suportar centenas, ou até milhares, de máquinas usando praticamente qualquer configuração.
Limpar os recursos
Este tutorial criou um projeto do Azure DevOps e alguns recursos no Azure. Se você não vai continuar a usar esses recursos, exclua-os com as seguintes etapas:
Exclua o projeto Azure DevOps criado pelo Gerador de Demonstração do Azure DevOps.
Todos os recursos do Azure criados durante este tutorial foram atribuídos ao grupo de recursos especificado durante a criação. A exclusão desse grupo excluirá os recursos que eles contêm. Esta eliminação pode ser feita através da CLI ou do portal.