Aprovisionar agentes para grupos de implementação

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

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

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

  • Execute o script que é gerado automaticamente quando você cria um grupo de implantação.
  • Instale a extensão de VM do Azure Pipelines Agent em cada uma das VMs.
  • Use a tarefa de implantação do Modelo ARM em seu pipeline de versão.

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

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

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

  2. Introduza um nome para o grupo e, opcionalmente, uma descrição e, em seguida, selecione Criar.

  3. Na seção Registrar máquinas usando linha de comando da próxima página, selecione o sistema operacional da máquina de destino.

  4. Escolha Usar um token de acesso pessoal no script para autenticação. Mais informações.

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

  6. Faça login em cada máquina de destino usando a conta com as permissões apropriadas e:

    • Abra um prompt de comando do PowerShell do administrador, cole o script copiado e execute-o para registrar a máquina com esse grupo.

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

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

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

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

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

    • Aguarde até que o script termine 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 Máquinas e verifique se os agentes estão em execução. Se as tags configuradas não estiverem visíveis, atualize a página.

Instalar a extensão de VM do Azure Pipelines Agent

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

  2. Introduza um nome para o grupo e, opcionalmente, uma descrição e, em seguida, selecione 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 de Pipelines do Azure.

    Instalando a extensão do Agente de Pipelines do Azure

  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, basta 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 anexado com -DG.

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

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

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

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

Usar a tarefa de implantação do Modelo ARM

Importante

Estas instruções referem-se à versão 2 da tarefa. Mude a versão da Tarefa de 3 para 2.

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

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

Um modelo 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. Num único modelo, pode implementar vários serviços, bem como as respetivas dependências.

Para uma VM do Windows, crie um modelo ARM e adicione um elemento resources sob o Microsoft.Compute/virtualMachine recurso, 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')]"
     }
   }
  }
]

Nota

No Azure DevOps Server 2022, os valores permitidos para AgentMajorVersion são auto|N. No Azure DevOps Server 2022.1 e superior, 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 é obrigatório. A assinatura do Azure Pipelines a ser usada. Exemplo: Se o seu URL for https://dev.azure.com/contoso, basta especificar contoso
  • TeamProject é obrigató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 anexado será usado
  • As tags são opcionais. Uma lista separada por vírgulas de tags que serão definidas no agente. As tags não diferenciam maiúsculas de minúsculas e cada uma não deve ter mais de 256 caracteres
  • PATToken é obrigatório. O Token de Acesso Pessoal usado para autenticar no Azure Pipelines para baixar e configurar o agente

Nota

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

Solucionar problemas da extensão

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

  • Arquivo de status ficando muito grande: esse problema ocorre em VMs do Windows, não foi observado em VMs Linux. O arquivo de 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 de status e passa o objeto de status como resposta às solicitações de API. O ficheiro tem um tamanho máximo permitido; se o tamanho exceder o limite, o Azure não poderá lê-lo completamente e dará um erro para o status. Em cada reinicialização da máquina, algumas operações são executadas pela extensão (mesmo que ela possa ser instalada com êxito anteriormente), que acrescentam o arquivo de status. Se a máquina for reinicializada um grande número de vezes, o tamanho do arquivo de status excede 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 máquinas (versão 1.27.0.2 para extensão Windows e 1.21.0.1 para extensão Linux em diante), portanto, em uma reinicialização, nada será adicionado ao arquivo de status. Se você teve esse problema com sua extensão antes da correção ser feita (ou seja, você estava tendo esse problema com versões anteriores da extensão) e sua extensão foi atualizada automaticamente para as versões com a correção, o problema ainda persistirá. Isso ocorre porque na atualização da extensão, a versão mais recente da extensão ainda funciona com o arquivo de status anterior. Atualmente, você ainda pode estar enfrentando esse problema se estiver usando uma versão anterior da extensão com o sinalizador para desativar as atualizações automáticas da versão secundária, ou se um arquivo de status grande 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ê pode superar esse problema desinstalando e reinstalando a extensão. A desinstalação da extensão limpa todo o diretório da extensão, portanto, um novo arquivo de status será criado para nova instalação. Terás de instalar a versão mais recente da extensão. Esta solução é uma correção permanente e, depois de seguir isso, você não deve enfrentar o problema novamente.

  • Problema com dados personalizados: esse problema não é com a extensão, mas alguns clientes relataram confusão em relação ao local de dados personalizados na VM ao alternar versões do sistema operacional. Sugerimos a seguinte solução alternativa. Python 2 foi preterido, então fizemos a extensão para trabalhar com Python 3. Se você ainda estiver usando versões anteriores do sistema operacional que não tenham o Python 3 instalado por padrão, para executar a extensão, você deve instalar o Python 3 na VM ou alternar 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 Microsoft Azure Linux Agent e para versões /var/lib/waagent/CustomData mais recentes do Microsoft Azure Linux Agent. Parece que os clientes que codificaram apenas um desses dois caminhos enfrentam problemas ao alternar 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 ambos os arquivos no modelo para que, se um falhar, o outro tenha êxito.

Para obter mais informações sobre modelos ARM, consulte 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 novo grupo.

  2. Introduza um nome para o grupo e, opcionalmente, uma descrição e, em seguida, selecione Criar.

  3. Na guia Versões do Azure Pipelines, crie um pipeline de liberação com um estágio que contenha a tarefa de implantação do Modelo 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 versão.

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

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

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

  2. Introduza um nome para o grupo e, opcionalmente, uma descrição e, em seguida, selecione Criar.

  3. Na guia Versões do Azure Pipelines, crie um pipeline de liberação com um estágio que contenha a tarefa de implantação do Modelo 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 do Grupo de Implantação.

    • Ponto de extremidade do Azure Pipelines/TFS: selecione uma conexão de serviço existente do Team Foundation Server/TFS 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 existente, escolha Adicionar e crie uma agora. Configure-o para usar um Token de Acesso Pessoal (PAT) 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 definidas (marcadas), todas as marcas já configuradas na VM do Azure serão copiadas para o agente de 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 versão.

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

Ajuda e suporte