Partilhar via


Implantar aplicativos Web em VMs do Azure com grupos de implantação

Serviços de DevOps do Azure | Azure DevOps Server | Azure DevOps Server 2022

Em versões anteriores do Azure Pipelines, a implantação de aplicativos em vários servidores exigia planejamento e manutenção significativos. A comunicação remota do Windows PowerShell precisava ser habilitada manualmente, portas específicas precisavam ser abertas e agentes de implantação precisavam ser instalados em cada servidor. A gestão das implementações também requeria intervenção manual. Esses desafios foram muito simplificados com a introdução de Grupos de Implantação.

Um grupo de implantação instala um agente de implantação em cada servidor de destino do grupo e permite que o pipeline de liberação implante gradualmente o aplicativo nesses servidores. Você pode criar vários pipelines para implantações incrementais, permitindo a entrega em fases de atualizações de aplicativos para diferentes grupos de usuários.

Observação

Os grupos de implantação são usados em pipelines clássicos. Se você estiver usando pipelines YAML, consulte Environments.

Pré-requisitos

Produto Requisitos
Azure DevOps - Uma organização Azure DevOps .
- Um projeto do Azure DevOps .
Gerador de demonstração do Azure DevOps - Configure o Gerador de demonstração.
- Crie um novo projeto Azure DevOps e certifique-se de escolher o modelo DeploymentGroups (número 15 na lista).
Azure - Uma assinatura do Azure.

Configurar recursos no Azure

Esta seção orienta você na configuração de seus recursos do Azure usando um modelo ARM. Ele provisiona seis servidores Web de Máquina Virtual (VM) com o IIS configurado, uma VM do SQL Server (servidor de banco de dados), um Balanceador de Carga do Azure e todas as conexões de rede necessárias.

  1. Selecione o botão Implantar no Azure para iniciar a implantação de seus recursos no Azure.

  2. Preencha as informações necessárias e selecione Rever + criar. Você pode usar qualquer combinação permitida de nomes de usuário e senhas, pois eles não serão usados novamente neste tutorial. O Nome do Prefixo Env é adicionado a todos os nomes de recursos para garantir a exclusividade global. Use algo pessoal ou aleatório. Se você encontrar um conflito de nomenclatura durante a validação ou criação, tente alterar esse valor e reimplantar. O provisionamento normalmente leva de 10 a 15 minutos.

    Uma captura de tela mostrando como configurar seus recursos do Azure no Azure.

  3. Após a conclusão da validação, selecione Criar para implantar seus recursos.

  4. Quando a implantação terminar, vá para seu grupo de recursos no portal do Azure para revisar os recursos gerados. Selecione a VM do servidor de banco de dados com sqlSrv em seu nome para exibir seus detalhes.

    Uma captura de tela exibindo os recursos recém-criados no Azure.

  5. Copie o nome DNS como você precisará dele em uma etapa posterior.

    Uma captura de tela exibindo a VM do servidor de banco de dados no Azure.

Criar um grupo de implantação

Um grupo de implantação é uma coleção de máquinas, cada uma com um agente de implantação instalado. Essas máquinas se comunicam com o Azure Pipelines para coordenar implantações de aplicativos.

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

  2. Selecione Pipelines>Grupos de implantação.

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

  4. Insira Release como o nome do grupo de implantação e selecione Criar. Será gerado um script de registo. Você pode usar esse script para registrar servidores de destino e instalar o agente de implantação manualmente. No entanto, neste tutorial, os servidores de destino são registados automaticamente como parte do processo de lançamento.

Criar um token de acesso pessoal

  1. No seu projeto do Azure DevOps, selecione o ícone Configurações do Usuário e, em seguida, selecione Tokens de Acesso Pessoal.

  2. Selecione Novo Token, insira um nome para o PAT e escolha uma data de validade.

  3. Selecione Definido pelo utilizador para Escopos, selecione Mostrar todos os escopos e, em seguida, verifique os seguintes escopos:

    1. Projeto e Equipa ->Ler e escrever.
    2. Pools de agentes ->Ler & gerenciar
    3. Grupos de Implantação ->Ler e gerir.
  4. Selecione Criar quando terminar e copie o PAT, pois irá precisar dele para a secção seguinte.

Configurar o pipeline de liberação

O modelo de pipeline de liberação clássica inclui um trabalho de agente, a fase Agente, que executa tarefas em um agente em um pool de agentes. Ele também inclui dois trabalhos de grupo de implantação: a fase de grupo de implantação e a fase de implantação do IIS. Os trabalhos do grupo de implantação executam tarefas em máquinas definidas no grupo de implantação. Siga as etapas abaixo para configurar cada trabalho.

Configurar o trabalho do agente

  1. Navegue até seu projeto de DevOps do Azure e selecione Pipelines>Releases.

  2. Selecione a definição de lançamento dos Grupos de Implantação e, em seguida, selecione Editar.

  3. Selecione a guia Tarefas para exibir as tarefas de implantação em seu pipeline.

  4. Selecione o estágio Agent phase e escolha o pool Azure Pipelines e a especificação windows-latest.

    Uma captura de tela exibindo a fase do agente no pipeline de liberação Classic.

  5. Selecione a tarefa Implantação do Grupo de Recursos do Azure , selecione a assinatura do Azure usada anteriormente para criar seus recursos e selecione Autorizar para autorizar a conexão. Depois de autorizado, selecione o grupo de recursos que você criou para este tutorial.

    Uma captura de tela exibindo como configurar o grupo de recursos na tarefa de implantação.

  6. Essa tarefa será executada em máquinas virtuais no Azure e deve ser capaz de se conectar novamente ao pipeline para concluir os requisitos do grupo de implantação. Para proteger a conexão, uma conexão de serviço deve ser configurada usando o Token de Acesso Pessoal (PAT) criado anteriormente. Role para baixo dentro da mesma tarefa e selecione Novo em Conexão de serviço do Azure Pipelines.

  7. No painel Nova conexão de serviço , insira a URL de Conexão da sua organização https://dev.azure.com/organizationNamedo Azure DevOps . Cole o Token de Acesso Pessoal que criou anteriormente, especifique um Nome da ligação de serviço e marque a caixa Dar permissão de acesso a todos os pipelines. Selecione Verificar e salvar quando terminar.

    Uma captura de tela exibindo como configurar uma nova conexão de serviço para a tarefa de implantação.

  8. Role para baixo na tarefa Implantação do Grupo de Recursos do Azure e selecione nos menus suspensos seu projeto de Equipe e o Grupo de Implantação criado anteriormente.

    Uma captura de tela exibindo como configurar o projeto de equipe e o grupo de implantação para a tarefa de implantação.

Configurar as tarefas do grupo de implantação

  1. Na definição de versão Grupo de Implantação, selecione a tarefa da fase de Grupo de Implantação. Este trabalho executa tarefas nas máquinas definidas no grupo de implantação. Este trabalho utiliza a etiqueta SQL-Svr-DB para desenvolver um subconjunto de alvos no grupo de implementação. Na lista suspensa Grupo de Implantação , selecione o grupo de implantação Release criado anteriormente.

    Uma captura de tela exibindo como configurar o trabalho de fase do grupo de implantação.

  2. Selecione o trabalho da fase de implantação do IIS . Este trabalho usa a tag WebSrv para implantar o aplicativo Web em um subconjunto dos servidores Web. Escolha o Grupo de Implantação criado anteriormente na lista suspensa.

  3. As tarefas Desconectar o Balanceador de Carga de Rede do Azure e Conectar o Balanceador de Carga de Rede do Azure foram preteridas. você pode desativá-los por enquanto clicando com o botão direito do mouse na tarefa e selecionando Desativar selecionar tarefa(s).

  4. As tarefas Gerenciar do IIS Web App e Implantar o IIS Web App são pré-preenchidas e não exigem alterações.

  5. Selecione a guia Variáveis no canto superior esquerdo, selecione Variáveis de pipeline e forneça os seguintes valores. Substitua o espaço reservado na variável DefaultConnectionString pelo nome DNS do SQL Server copiado anteriormente:

    Nome da variável Valor da variável
    Nome do Banco de Dados PartsUnlimited-Dev
    DBPassword xxxxxxxx
    DBUserName xxxxxxxx
    DefaultConnectionString Fonte de dados=[YOUR_DNS_NAME]; Catálogo Inicial = PartsUnlimited-Dev; ID do usuário=xxxxxxxx;Password=xxxxxxxx;MultipleActiveResultSets=False; Tempo limite de conexão=30;
    Nome do servidor localhost
  6. Selecione Guardar, adicione um comentário se pretender e, em seguida, selecione Ok.

Sugestão

Se você receber um erro informando que a variável DefaultConnectionString deve ser salva como um segredo, selecione o ícone de cadeado ao lado de seu valor para protegê-lo.

Criar um lançamento e implantar uma aplicação

Agora que a definição de versão está configurada e salva, você pode continuar a criar uma versão para implantar seu aplicativo Web no Azure. No entanto, antes de iniciar a versão, você precisa se certificar de que o pipeline de compilação foi executado pelo menos uma vez. Isso gera o artefato de pipeline necessário para a implantação. Se você tentar executar o pipeline de liberação antes do pipeline de compilação, a seção Artefatos no painel de liberação ficará vazia. Siga as etapas abaixo para executar seu pipeline, gerar um artefato de pipeline e criar uma nova versão:

  1. No seu projeto do Azure DevOps, selecione Pipeline e, em seguida, selecione o pipeline de compilação dos Grupos de Implantação .

  2. Selecione Executar pipeline. No painel de execução do pipeline, selecione a especificação do Agente e, em seguida, selecione Executar.

    Uma captura de tela exibindo como configurar a execução do pipeline.

  3. Depois que o pipeline for concluído com êxito, ele gerará um artefato de pipeline. Você pode visualizá-lo na janela de resumo do pipeline:

    Uma captura de ecrã exibindo o artefato de pipeline gerado.

  4. Agora vá para Pipelines>, selecione sua definição de release e selecione Create release para iniciar o pipeline de implantação.

    Uma captura de tela exibindo como criar uma nova versão.

  5. Selecione Criar quando terminar e, em seguida, selecione a execução do pipeline para abrir a visão geral. Você deve ver seu pipeline em andamento. Clique no estágio para visualizar os logs de implantação detalhados.

    Uma captura de tela exibindo a visão geral do pipeline de liberação.

  6. Na janela de resumo, você pode ver o status de cada fase da implantação:

    Uma captura de tela exibindo o resumo da versão.

Solução de problemas

  • Não é possível conectar-se ao servidor mestre ou de destinoou Uma conexão foi estabelecida com êxito com o servidor, mas ocorreu um erro durante o processo de login.

Se você encontrar um desses erros ao executar a tarefa Sql Dacpac Deployment On Machine Group , execute estas etapas:

  1. Verifique a sua base de dados:

Verifique se o banco de dados foi criado com êxito durante a implantação do recurso. Você pode confirmar isso usando a CLI do Azure ou sqlcmd:

sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"

Se o banco de dados não estiver presente na lista, você poderá criar um novo usando o seguinte comando:

sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
  1. Verifique sua autenticação do SQL Server:

Verifique se a Autenticação do SQL Server está habilitada, seu SQL Server deve ser configurado para permitir a Autenticação SQL e a Autenticação do Windows (Modo Misto). Para permitir isso:

a) Conectar-se usando SSMS ou sqlcmd

b) Execute a seguinte consulta:

EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
    N'LoginMode',
    REG_DWORD,
    2;

c. Reinicie o serviço SQL Server para que a alteração entre em vigor:

net stop MSSQLSERVER
net start MSSQLSERVER
  • Alguns dos meus agentes estão offline, embora o agente esteja em execução na minha VM

Se um ou mais de seus agentes estiverem aparecendo como offline, você pode tentar algumas coisas. Primeiro, faça login na VM em que o agente está sendo executado e execute o seguinte comando para verificar se sua VM está resolvendo para o mesmo conjunto de IPs.

nslookup dev.azure.com

Se todas as VMs estiverem resolvendo para o mesmo conjunto de IPs, verifique se o balanceador de carga está configurado com a regra de saída correta. Você pode adicionar um pool de back-end ao seu balanceador de carga no Azure, adicionar as NICs de suas VMs ao pool de back-end e associá-lo à regra de saída do seu balanceador de carga. Para tal:

  1. Navegue até o Azure e encontre seu balanceador de carga.

  2. Selecione Pools de back-end, escolha seu pool existente ou crie um novo e adicione seus servidores Web em configurações de IP.

  3. Vá para Regras de balanceamento de carga, selecione a sua regra de balanceamento de carga e escolha o seu pool de back-end na dropdown Pool de back-end.

Limpeza de recursos

Este tutorial criou um projeto do Azure DevOps e implantou recursos no Azure. Se já não precisar deles, siga estes passos para limpar:

  1. Excluir o projeto do Azure DevOps: navegue até as configurações> do projetoVisão geral>Excluir.

  2. Excluir o Grupo de Recursos do Azure Todos os recursos do Azure criados durante este tutorial foram colocados no mesmo grupo de recursos. A exclusão do grupo de recursos removerá todos os recursos associados. Você pode fazer isso por meio do portal do Azure ou da CLI:

  • CLI do Azure

    az group delete --name <RESOURCE_GROUP_NAME> --yes --no-wait
    
  • portal do Azure

  1. Navegue até > do portal do Azure.

  2. Selecione o grupo de recursos usado no tutorial.

  3. Selecione Excluir grupo de recursos, confirme o nome e selecione Excluir.