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
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.
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.
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.
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.
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.
Navegue até o projeto do Azure DevOps criado pelo gerador de demonstração.
Em Pipelines, navegue até Grupos de implantação.
Selecione Adicionar um grupo de implantação.
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.
Em Pipelines, navegue até Versões. Selecione o pipeline de lançamento chamado de 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 como três fases chamadas de fase do agente, fase de grupo de implantação e fase de implantação do IIS.
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.
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.
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.
Na nova guia, selecione Novo Token.
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.
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. 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.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.
Selecione o Projeto de equipe atual e o Grupo implantação criado anteriormente.
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.
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.
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).
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
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.
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).
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:
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
Selecione Salvar e confirme.
Selecione Criar versão e confirme. Acompanhe a versão até a conclusão. A implantação está 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 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.
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 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:
Exclua o projeto do 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. Excluir esse grupo excluirá os recursos que eles contêm. Essa exclusão pode ser feita por meio da CLI ou do portal.