Implantar em VMs do Azure usando grupos de implantação no Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Nas versões anteriores do Azure Pipelines, os aplicativos que precisavam ser implantados em vários servidores exigiam planejamento e manutenção consideráveis. A comunicação remota do Windows PowerShell tinha que ser habilitada manualmente, as portas necessárias abertas e os agentes de implantação instalados em cada um dos servidores. Os pipelines precisavam ser gerenciados manualmente, se uma implantação de implantação fosse necessária.

Todos os desafios acima evoluíram 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 lançamento a implantar gradativamente o aplicativo nesses servidores. Vários pipelines podem ser criados para as implantações de distribuição para que a versão mais recente de um aplicativo possa ser entregue em fases a vários grupos de usuários para validação de recursos recém-introduzidos.

Observação

Os grupos de implantação são um conceito usado em pipelines clássicos. Se você estiver usando pipelines YAML, confira Ambientes.

Neste tutorial, você aprenderá a:

  • Como provisionar a infraestrutura de VM para o Azure usando um modelo
  • Como criar um grupo de implantação do Azure Pipelines
  • Como criar e executar 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 do Azure DevOps.

Use o Gerador de Demonstração do Azure DevOps para provisionar o projeto de tutorial na sua organização do Azure DevOps.

Como configurar o ambiente de implantação do Azure

Os seguintes recursos são provisionados no Azure usando um modelo do ARM:

  • Seis servidores Web de VM (Máquinas Virtuais) com o IIS configurado
  • VM do SQL Server (servidor DB)
  • Balanceador de Carga de Rede do Azure
  1. 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 administrativos e senhas permitidos, pois eles não serão usados novamente neste tutorial. O Nome do Prefixo Env é prefixado para todos os nomes de recursos, a fim de 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.

    Implantar no Azure

    Captura de tela mostrando como configurar seu ambiente de implantação do Azure.

    Observação

    Leva aproximadamente de 10 a 15 minutos para concluir a implantação. Se você receber erros de conflito de nomenclatura, tente alterar o parâmetro fornecido para Nome do Prefixo Env.

  2. Depois que a implantação for concluída, você poderá examinar todos os recursos gerados no grupo de recursos especificado usando o portal do Azure. Selecione a VM do servidor DB com sqlSrv no nome para exibir os detalhes.

    Grupo de recursos implantado no Azure.

  3. Anote o nome DNS. Esse valor será necessário em uma etapa posterior. Use o botão Copiar para copiá-lo na área de transferência.

    DNS do SQL implantado no Azure.

Como criar e configurar um grupo de implantação

O Azure Pipelines facilita a organização dos servidores necessários para a implantação de aplicativos. Um grupo de implantação é uma coleção de computadores com agentes de implantação. Cada um dos computadores interage com o Azure Pipelines para coordenar a implantação do aplicativo.

Como não há alterações de configuração necessárias para o pipeline de build, o build é disparado automaticamente após o provisionamento do projeto. Quando você enfileirar uma versão posteriormente, esse build será usado.

  1. Navegue até o projeto do Azure DevOps criado pelo gerador de demonstração.

  2. Em Pipelines, navegue até Grupos de implantação.

    Como navegar para os Grupos de implantação em Pipelines

  3. Selecione Adicionar um grupo de implantação.

  4. Insira o Nome do grupo de implantação da Versão e selecione Criar. Um script de registro será 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 lançamento. A definição de versão usa fases para implantar o aplicativo nos servidores de destino. Uma fase é um agrupamento lógico das tarefas que define o destino de runtime no qual as tarefas serão executadas. Cada fase de grupo de implantação executa tarefas nos computadores definidos no grupo de implantação.

  5. Em Pipelines, navegue até Versões. Selecione o pipeline de lançamento chamado de Grupos de Implantação e selecione Editar.

  6. Selecione a guia Tarefas para exibir as tarefas de implantação no pipeline. As tarefas são organizadas como três fases chamadas de fase do agente, fase de grupo de implantação e fase de implantação do IIS.

  7. Selecione a fase de Agente. Nesta fase, 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 windows-latest.

    Como configurar a fase de agente

  8. 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 a infraestrutura. Depois de autorizar a conexão, selecione o grupo de recursos criado para este tutorial.

    Como criar uma conexão de serviço do Azure

  9. Essa tarefa será executada nas máquinas virtuais hospedadas no Azure e precisará se conectar novamente a esse pipeline para concluir os requisitos do grupo de implantação. Para proteger a conexão, elas precisarão de um PAT (token de acesso pessoal). Na lista suspensa Configurações do usuário, abra Tokens de acesso pessoal em uma nova guia. A maioria dos navegadores permite abrir um link em uma nova guia usando o menu de contexto clicando com o botão direito do mouse ou Ctrl+Clique.

    Como navegar para os tokens de acesso pessoal

  10. Na nova guia, selecione Novo Token.

  11. Insira um nome e selecione o escopo Acesso completo. Selecione Criar para criar o token. Depois de criado, copie o token e feche a guia do navegador. Você retornará ao editor do Azure Pipeline.

    Criando um token de acesso pessoal

  12. Em Conexão de serviço do Azure Pipelines, selecione Novo.

    Como adicionar uma conexão de serviço do Azure Pipelines

  13. Insira a URL de Conexão para a instância atual do Azure DevOps. Essa URL é semelhante a 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 Verify and save.

    Como criar uma conexão de serviço do Azure Pipelines

    Observação

    Para registrar um agente, você dever ser um membro da função de Administrador no pool de agentes. A identidade do administrador do pool de agentes é necessária apenas no momento do registro. A identidade do administrador não é persistente no agente e não é usada nas comunicações subsequentes entre o agente e o Azure Pipelines. Depois que o agente é registrado, não é necessário renovar o token de acesso pessoal, pois ele é necessário apenas no momento do registro.

  14. Selecione o Projeto de equipe atual e o Grupo implantação criado anteriormente.

    Como configurar o grupo de implantação do Azure Pipelines

  15. Selecione a Fase de grupo de implantação. Essa fase executa tarefas nos computadores definidos no grupo de implantação. Essa fase está vinculada à marca SQL-Svr-DB. Escolha o Grupo de Implantação na lista suspensa.

    Como configurar a fase do grupo de implantação

  16. Selecione a fase de implantação do IIS. Essa fase implanta o aplicativo nos servidores Web usando as tarefas especificadas. Essa fase está vinculada à marca WebSrv. Escolha o Grupo de Implantação na lista suspensa.

  17. Selecione a tarefa Desconectar rede do Azure Load Balancer. Como os computadores de destino estão conectados ao NLB, essa tarefa desconectará os computadores do NLB antes da implantação e os reconectará 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).

  18. Selecione a tarefa Gerenciar aplicativo Web do IIS. Essa tarefa é executada nos computadores de destino de implantação registrados com o grupo de implantação configurado para a tarefa/fase. Ela cria um aplicativo Web e um pool de aplicativos localmente com o nome PartsUnlimited em execução na porta 80

  19. Selecione a tarefa Implantar aplicativo Web do IIS. Essa tarefa é executada nos computadores de destino de implantação registrados com o grupo de implantação configurado para a tarefa/fase. Ela implanta o aplicativo no servidor IIS usando a Implantação da Web.

  20. Selecione a tarefa Conectar rede do Azure 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).

  21. Selecione a guia Variáveis e insira os valores da variável conforme mostrado abaixo.

    Nome da variável Valor da variável
    DatabaseName PartsUnlimited-Dev
    DBPassword P2ssw0rd@123
    DBUserName sqladmin
    DefaultConnectionString Data Source=[YOUR_DNS_NAME];Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;
    ServerName localhost

    Importante

    Substitua o nome DNS do SQL Server (que você anotou de portal do Azure anteriormente) na variável DefaultConnectionString.

    O DefaultConnectionString deve ser semelhante a essa cadeia de caracteres depois de substituir o DNS do 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 a seguinte aparência:

    Como configurar as variáveis de pipeline

    Observação

    Você pode receber um erro de que a variável DefaultConnectionString deve ser salva como um segredo. Se isso acontecer, selecione a variável e clique no ícone de cadeado exibido ao lado do valor para protegê-la.

Como enfileirar uma versão e examinar a implantação

  1. Selecione Salvar e confirme.

  2. Selecione Criar versão e confirme. Acompanhe a versão até a conclusão. A implantação está pronta para revisão.

  3. No portal do Azure, abra uma das VMs Web no seu grupo de recursos. Você pode selecionar qualquer um que tenha websrv no nome.

    Como localizar uma VM Web

  4. Copie o DNS da VM. O Azure Load Balancer distribuirá o tráfego de entrada entre as 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.

    Como localizar o domínio do aplicativo Web

  5. Abra uma nova guia do navegador para o DNS da VM. Confirme se o aplicativo implantado está em execução.

    Como examinar o aplicativo

Resumo

Neste tutorial, você implantou um aplicativo Web em um conjunto de VMs do Azure usando o Azure Pipelines e grupos de implantação. Embora esse cenário aborde vários computadores, você pode dimensionar facilmente o processo para dar suporte a centenas ou até mesmo milhares de computadores usando praticamente qualquer configuração.

Limpando recursos

Este tutorial criou um projeto do Azure DevOps e alguns recursos no Azure. Se você não quiser continuar usando esses recursos, exclua-os com as seguintes etapas:

  1. Exclua o projeto do Azure DevOps criado pelo Gerador de Demonstração do Azure DevOps.

  2. Todos os recursos do Azure criados durante este tutorial foram atribuídos ao grupo de recursos especificado durante a criação. Excluir esse grupo excluirá os recursos que eles contêm. Essa exclusão pode ser feita por meio da CLI ou do portal.

Próximas etapas