Partilhar via


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
  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 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.

    Implementar no Azure

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

    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.

  2. 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.

    Grupo de recursos implantado no Azure.

  3. 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.

    DNS SQL implantar no Azure.

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.

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

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

    Navegando para grupos de implantação em Pipelines

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

  4. 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.

  5. Em Pipelines, navegue até Releases. Selecione o pipeline de versão chamado 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 em três estágios chamados fase do agente, fase do grupo de implantação e fase de implantação do IIS.

  7. 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.

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

    Criando uma conexão de serviço do Azure

  9. 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.

    Navegando para tokens de acesso pessoais

  10. Na nova guia, selecione Novo token.

  11. 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.

    Criando um token de acesso pessoal

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

    Adicionando uma conexão de serviço do Azure Pipelines

  13. 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.

    Criando uma conexão de serviço do Azure Pipelines

    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.

  14. Selecione o projeto de equipe atual e o grupo de implantação criado anteriormente.

    Configurando o grupo de implantação do Azure Pipelines

  15. 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.

    Configurando a fase do grupo de implantação

  16. 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.

  17. 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).

  18. 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

  19. 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.

  20. 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).

  21. 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:

    Configurando variáveis de pipeline

    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

  1. Selecione Salvar e confirme.

  2. Selecione Criar versão e confirme. Siga a versão até a conclusão. A implantação está então 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.

    Localizando uma VM da Web

  4. 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.

    Localizando 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.

    Rever a aplicaçã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:

  1. Exclua o projeto 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. 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.

Próximos passos