Provisionar agentes para grupos de implantação

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

Os grupos de implantação facilitam a definição de grupos lógicos de computadores de destino para implantação e instalam o agente necessário em cada computador. Este artigo explica como criar um grupo de implantação e como instalar e provisionar o agente em cada máquina virtual ou computador físico no grupo de implantação.

Você pode instalar o agente de qualquer uma destas maneiras:

Para obter informações sobre agentes e pipelines, confira:

Executar o script de instalação nos servidores de destino

  1. Na guia Grupos de implantação do Azure Pipelines, escolha +Novo para criar um grupo.

  2. Insira um nome para o grupo e, opcionalmente, uma descrição, então escolha Criar.

  3. Na seção Registrar computadores usando a linha de comando da próxima página, selecione o sistema operacional do computador de destino.

  4. Escolha Usar um token de acesso pessoal no script para autenticação. Saiba mais.

  5. Escolha Copiar o script para a área de transferência.

  6. Entre em cada computador de destino usando a conta com as permissões apropriadas e:

    • Abra um prompt de comando do Administrador do PowerShell, cole-o no script copiado e execute-o para registrar o computador com esse grupo.

    • Se você receber um erro ao executar o script que um canal seguro não pôde ser criado, execute este comando no prompt do Administrador do PowerShell:

      [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    • Quando solicitado a configurar marcas para o agente, pressione Y e insira as marcas que você usará para identificar subconjuntos dos computadores no grupo para implantações parciais.

      As marcas atribuídas permitem limitar a implantação a servidores específicos quando o grupo de implantação é usado em um trabalho Executar em grupo de computadores.

    • Quando a conta de usuário for solicitada, pressione Retornar para aceitar os padrões.

    • Aguarde até que o script seja concluído com a mensagem Service vstsagent.{organization-name}.{computer-name} started successfully.

  7. Na página Grupos de implantação do Azure Pipelines, abra a guia Computadores e verifique se os agentes estão em execução. Se as marcas configuradas não estiverem visíveis, atualize a página.

Instalar a extensão de VM do Azure Do Agente do Azure pipelines

  1. Na guia Grupos de implantação do Azure Pipelines, escolha +Novo para criar um grupo.

  2. Insira um nome para o grupo e, opcionalmente, uma descrição, então escolha Criar.

  3. No portal do Azure, para cada VM que será incluída no grupo de implantação, abra a folha Extensão, escolha + Adicionar para abrir a lista Novo recurso e selecione Agente do Azure Pipelines.

    Como instalar a extensão do Agente do Azure Pipelines

  4. Na folha Instalar extensão, especifique o nome da assinatura do Azure Pipelines a ser usada. Por exemplo, se a URL for https://dev.azure.com/contoso, bastará especificar contoso.

  5. Especifique o nome do projeto e o nome do grupo de implantação.

  6. Opcionalmente, especifique um nome para o agente. Se não for especificado, ele usará o nome da VM com -DG prefixado.

  7. Insira o PAT (Token de Acesso Pessoal) a ser usado para autenticação no Azure Pipelines.

  8. Opcionalmente, especifique uma lista separada por vírgulas de marcas que serão configuradas no agente. As marcas não diferenciam maiúsculas de minúsculas e cada uma precisa ter, no máximo, 256 caracteres.

  9. Escolha OK para iniciar a instalação do agente nesta VM.

  10. Adicione a extensão a outras VMs que você deseja incluir nesse grupo de implantação.

Usar a tarefa de implantação de Modelo do ARM

Importante

Essas instruções referem-se à versão 2 da tarefa. Alterne sua Versão da tarefa de 3 para 2.

Você pode usar a tarefa de implantação de Modelo do ARM para implantar um modelo do Azure Resource Manager (ARM) que instala a extensão de VM do Azure do Agente do Azure Pipelines ao criar uma máquina virtual ou atualizar o grupo de recursos para aplicar a extensão após a criação da máquina virtual. Como alternativa, você pode usar as opções de implantação avançadas da tarefa de implantação de Modelo do ARM para implantar o agente em grupos de implantação.

Instalar a extensão de VM do Azure "Agente do Azure Pipelines" usando um modelo do ARM

Um modelo do ARM é um arquivo JSON que define declarativamente um conjunto de recursos do Azure. O modelo pode ser lido automaticamente e os recursos provisionados pelo Azure. Em um modelo único, você pode implantar vários serviços, juntamente com suas dependências.

Para uma VM do Windows, crie um modelo do ARM e adicione um elemento resources no recurso Microsoft.Compute/virtualMachine, conforme mostrado aqui:

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|2|3",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Observação

No Azure DevOps Server 2022, os valores permitidos para AgentMajorVersion são auto|N. No Azure DevOps Server 2022.1 e versões superiores, os valores permitidos para AgentMajorVersion são auto|2|3.

"resources": [
  {
    "name": "[concat(parameters('vmNamePrefix'),copyIndex(),'/TeamServicesAgent')]",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[parameters('location')]",
    "apiVersion": "2015-06-15",
    "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines/',
                      concat(parameters('vmNamePrefix'),copyindex()))]"
    ],
    "properties": {
      "publisher": "Microsoft.VisualStudio.Services",
      "type": "TeamServicesAgent",
      "typeHandlerVersion": "1.0",
      "autoUpgradeMinorVersion": true,
      "settings": {
        "VSTSAccountName": "[parameters('VSTSAccountName')]",
        "TeamProject": "[parameters('TeamProject')]",
        "DeploymentGroup": "[parameters('DeploymentGroup')]",
        "AgentName": "[parameters('AgentName')]",
        "AgentMajorVersion": "auto|N",
        "Tags": "[parameters('Tags')]"
      },
      "protectedSettings": {
      "PATToken": "[parameters('PATToken')]"
     }
   }
  }
]

Em que:

  • VSTSAccountName é necessário. A assinatura do Azure Pipelines a ser usada. Exemplo: se a URL for https://dev.azure.com/contoso, bastará especificar contoso
  • TeamProject é necessário. O projeto que tem o grupo de implantação definido dentro dele
  • DeploymentGroup é necessário. O grupo de implantação no qual o agente de implantação será registrado
  • AgentName é opcional. Se não for especificado, o nome da VM com -DG acrescentado será usado
  • Marcas é opcional. Uma lista separada por vírgulas de marcas que serão definidas no agente. As marcas não diferenciam maiúsculas de minúsculas e cada uma precisa ter, no máximo, 256 caracteres
  • PATToken é necessário. O Token de Acesso Pessoal que é usado para autenticar no Azure Pipelines para baixar e configurar o agente

Observação

Se você estiver implantando em uma VM do Linux, verifique se o parâmetro type no código é TeamServicesAgentLinux.

Solucionar problemas da extensão

Esses são alguns problemas conhecidos com a extensão:

  • Arquivo de status ficando muito grande: esse problema ocorre em VMs do Windows; ele não foi observado em VMs do Linux. O arquivo status contém um objeto JSON que descreve o status atual da extensão. O objeto é um espaço reservado para listar as operações executadas até agora. O Azure lê esse arquivo status e passa o objeto status como resposta a solicitações de API. O arquivo tem um tamanho máximo permitido; se o tamanho exceder o limite, o Azure não poderá lê-lo completamente e fornecerá um erro para o status. Em cada reinicialização do computador, algumas operações são executadas pela extensão (embora ela possa ser instalada com êxito anteriormente), que acrescentam o arquivo status. Se o computador for reinicializado um grande número de vezes, o tamanho do arquivo status excederá o limite, o que causa esse erro. A mensagem de erro diz: Handler Microsoft.VisualStudio.Services.TeamServicesAgent:1.27.0.2 status file 0.status size xxxxxx bytes is too big. Max Limit allowed: 131072 bytes. Observe que a instalação da extensão pode ter sido bem-sucedida, mas esse erro oculta o estado real da extensão.

    Corrigimos esse problema para reinicializações de computador (versão 1.27.0.2 para a extensão do Windows e 1.21.0.1 para a extensão do Linux em diante), portanto, em uma reinicialização, nada será adicionado ao arquivo status. Se você tivesse esse problema com sua extensão antes de a correção ser feita (ou seja, você tinha esse problema com versões anteriores da extensão) e sua extensão foi automaticamente adicionada às versões com a correção, o problema ainda persistirá. Isso ocorre porque, na atualização de extensão, a versão mais recente da extensão ainda funciona com o arquivo de status anterior. Atualmente, você ainda pode ter esse problema se está usando uma versão anterior da extensão com o sinalizador para desativar as atualizações automáticas de versão secundária ou se um arquivo grande de status foi transportado de uma versão de extensão anterior para as versões mais recentes que contêm a correção ou por qualquer outro motivo. Se esse for o caso, você poderá superar esse problema desinstalando e reinstalando a extensão. Desinstalar a extensão limpa todo o diretório de extensão, portanto, um arquivo status será criado para instalação nova. Você precisa instalar a versão mais recente da extensão. A solução é uma correção permanente e, depois disso, você não terá mais esse problema.

  • Problema com os dados personalizados: esse problema não ocorre com a extensão, mas alguns clientes relataram ficar confusos em relação ao local dos dados personalizados na VM ao alternar as versões do sistema operacional. Sugerimos a solução alternativa a seguir. O Python 2 foi preterido, portanto, fizemos a extensão funcionar com o Python 3. Se você ainda estiver usando versões anteriores do sistema operacional que não têm o Python 3 instalado por padrão, para executar a extensão, instale o Python 3 na VM ou alterne para versões do sistema operacional que tenham o Python 3 instalado por padrão. Em VMs Linux, os dados personalizados são copiados para o arquivo /var/lib/waagent/ovf-env.xml para versões anteriores do Agente Linux do Microsoft Azure e para /var/lib/waagent/CustomData para versões mais recentes do Agente Linux do Microsoft Azure. Parece que os clientes que codificaram apenas um desses dois caminhos enfrentam problemas ao alternar as versões do sistema operacional porque o arquivo não existe na nova versão do sistema operacional, mas o outro arquivo está presente. Portanto, para evitar interromper o provisionamento da VM, você deve considerar os dois arquivos no modelo para que, se um falhar, o outro tenha êxito.

Para mais informações sobre modelos do ARM, confira Definir recursos em modelos do Azure Resource Manager.

Para usar o modelo:

  1. Na guia Grupos de implantação do Azure Pipelines, escolha +Novo para criar um grupo.

  2. Insira um nome para o grupo e, opcionalmente, uma descrição, então escolha Criar.

  3. Na guia Versões do Azure Pipelines, crie um pipeline de lançamento com uma fase que contenha a tarefa de Implantação de modelo do ARM .

  4. Forneça os parâmetros necessários para a tarefa, como a assinatura do Azure, o nome do grupo de recursos, o local e as informações do modelo e salve o pipeline de lançamento.

  5. Crie uma versão do pipeline de lançamento para instalar os agentes.

Instalar agentes usando as opções de implantação avançadas

  1. Na guia Grupos de implantação do Azure Pipelines, escolha +Novo para criar um grupo.

  2. Insira um nome para o grupo e, opcionalmente, uma descrição, então escolha Criar.

  3. Na guia Versões do Azure Pipelines, crie um pipeline de lançamento com uma fase que contenha a tarefa de Implantação de modelo do ARM .

  4. Selecione a tarefa e expanda a seção Opções avançadas de implantação para máquinas virtuais. Configure os parâmetros nesta seção da seguinte maneira:

    • Habilitar Pré-requisitos: selecione Configurar com o Agente de Grupo de Implantação.

    • Ponto de extremidade do Azure Pipelines/TFS: selecione uma conexão de serviço do Team Foundation Server/TFS existente que aponte para seu destino. O registro de agente para grupos de implantação requer acesso ao seu projeto do Visual Studio. Se você não tiver uma conexão de serviço, escolha Adicionar e crie uma agora. Configure-o para usar um PAT (Token de Acesso Pessoal) com escopo restrito ao Grupo de Implantação.

    • Projeto: especifique o projeto que contém o grupo de implantação.

    • Grupo de Implantação: especifique o nome do grupo de implantação no qual os agentes serão registrados.

    • Copiar marcas de VM do Azure para agentes: quando definido (marcado), todas as marcas já configuradas na VM do Azure serão copiadas para o agente do grupo de implantação correspondente. Por padrão, todas as marcas do Azure são copiadas usando o formato Key: Value. Por exemplo, Role: Web.

  5. Forneça os outros parâmetros necessários para a tarefa, como a assinatura do Azure, o nome do grupo de recursos e o local e salve o pipeline de lançamento.

  6. Crie uma versão do pipeline de lançamento para instalar os agentes.

Ajuda e suporte