Configurar scripts de provisionamento para imagens de Pools de DevOps Gerenciados

Os Pools de DevOps Gerenciados fornecem a opção de executar um script do PowerShell (Windows) ou um script Bash (Linux) para uma imagem em um pool antes de ser atribuído a um agente para executar um trabalho. Esse recurso permite cenários como a instalação de CAs raiz confiáveis e a configuração de variáveis de ambiente.

Importante

Os scripts de provisionamento estão atualmente em versão prévia. O recurso pode ser alterado antes da disponibilidade geral.

Os pools gerenciados do DevOps usam uma identidade gerenciada associada ao seu pool para baixar os scripts do Armazenamento de Blobs do Azure para o agente e enviar os logs do script de provisionamento para solução de problemas. O script de provisionamento é executado quando o agente é iniciado e você pode configurar o agente para reiniciar após a execução do script.

Para configurar uma imagem do Pool de DevOps Gerenciado para executar um script de provisionamento, execute as seguintes etapas:

  1. Crie dois contêineres de blob em uma conta de Armazenamento de Blobs: um para os scripts de provisionamento e arquivos de suporte e outro para carregar logs de script de provisionamento. Carregue seus scripts de provisionamento e quaisquer arquivos de suporte para o contêiner de blobs de scripts.
  2. Associe uma identidade gerenciada ao Pool de DevOps Gerenciado e atribua as funções necessárias à identidade gerenciada nos escopos apropriados para que o agente possa ler os scripts de provisionamento e fazer upload dos logs dos scripts de provisionamento.
  3. Configure suas imagens para usar os scripts de provisionamento desejados.

Pré-requisitos

Criar os contêineres de blobs

Os Pools de DevOps Gerenciados baixam scripts de provisionamento e seus arquivos de suporte de blobs armazenados em um contêiner em uma conta de Armazenamento de Blobs. Os Managed DevOps Pools requerem dois contêineres de blob na conta de armazenamento: um para baixar o script de provisionamento e os arquivos de suporte, e outro para enviar os logs do script de provisionamento.

Crie os dois contêineres de blob a seguir em sua conta Armazenamento de Blobs.

Armazenamento de Blobs contêiner Description
Contêiner de blobs de scripts. Se você não especificar um nome personalizado no ponto de entrada (provisioningScriptEntryPoint) ao configurar sua imagem para executar um script de provisionamento, o nome padrão será provisioningscript. Contém o script de provisionamento e todos os arquivos de suporte. O script de provisionamento deve ser nomeado Startup.ps1 para imagens Windows ou Startup.sh para imagens do Linux.
Contêiner de logs do script de provisionamento. Você não pode configurar esse nome de contêiner; deve ser mdpprovisioningscriptlogs.

Os Managed DevOps Pools podem criar automaticamente o contêiner de blobs mdpprovisioningscriptlogs, mas, para seguir o princípio do menor privilégio, recomendamos que você crie manualmente o contêiner mdpprovisioningscriptlogs. Para obter mais informações, consulte Atribuir funções Azure à identidade gerenciada.
Contém os logs stdout e stderr gerados pelo script de provisionamento e uma cópia do script. Os nomes de blob utilizam o nome da máquina do agente como um diretório virtual.

Carregue seu script de provisionamento e todos os arquivos de suporte para o contêiner de blob de scripts. O script de provisionamento deve ser nomeado Startup.ps1 para imagens Windows ou Startup.sh para imagens do Linux. Você pode incluir todos os arquivos de suporte exigidos pelos scripts no blob. Quando o agente é iniciado, esses arquivos são baixados para o diretório de trabalho do agente e o script de provisionamento é executado desse local.

Atribuir funções Azure à identidade gerenciada

Os Pools Gerenciados do DevOps usam uma identidade gerenciada para acessar os contêineres de Blobs que armazenam os scripts de provisionamento e os respectivos logs. Você deve associar uma identidade gerenciada ao pool de DevOps Gerenciado e atribuir as funções especificadas à identidade gerenciada nos escopos descritos nesta seção. Se o Pool de DevOps Gerenciado não tiver uma identidade gerenciada, crie uma seguindo as etapas em Configurar uma identidade gerenciada para o Pool de DevOps Gerenciado.

  • Se o Pool de DevOps Gerenciado tiver uma única identidade gerenciada associada, essa identidade será usada para acessar o script de provisionamento e os contêineres de logs do script de provisionamento.
  • Se o Pool de DevOps Gerenciado tiver mais de uma identidade gerenciada associada, designe uma identidade gerenciada específica a ser usada para provisionar scripts especificando a propriedade ID do cliente de identidade gerenciada (provisioningScriptManagedIdentityResourceId) ao configurar sua imagem para usar um script de provisionamento.

Atribua as funções da tabela a seguir à identidade gerenciada associada ao Pool de DevOps Gerenciado, nos escopos especificados, para permitir que o agente baixe os scripts e faça upload dos logs do script de provisionamento. Para obter mais informações sobre como atribuir funções de Azure, consulte Etapas para atribuir uma função Azure.

Função Scope
Leitor de Dados do Blob de Armazenamento Escopo do contêiner de blob de script. Se você não especificar um nome no ponto de entrada (provisioningScriptEntryPoint) ao configurar sua imagem para executar um script de provisionamento, o nome padrão será provisioningscript.
Colaborador de Dados de Blob de Armazenamento Para acesso com privilégio mínimo, crie manualmente o contêiner de logs do script de provisionamento (mdpprovisioningscriptlogs) e atribua a função à identidade gerenciada no escopo desse contêiner de blob.

Se você quiser que os Pools de DevOps Gerenciados criem o contêiner, atribua essa função à identidade gerenciada no escopo da conta de armazenamento. Se você atribuir a função Colaborador de Dados de Blob de Armazenamento no escopo da conta de armazenamento, não será necessário atribuir a função Leitor de Dados de Blob de Armazenamento no escopo do contêiner de scripts.

Configurar sua imagem para usar o script de provisionamento

Para usar um script de provisionamento com uma imagem, configure as propriedades de imagem a seguir.

Property Description
ID do recurso da conta de armazenamento
provisioningScriptStorageAccountResourceId
Obrigatório. O ID de recurso da conta de armazenamento que contém o contêiner de scripts (nome padrão provisioningscript) e o contêiner mdpprovisioningscriptlogs.
Ponto de entrada
provisioningScriptEntryPoint
O nome do contêiner de blob que contém o script de provisionamento e os arquivos de suporte. Se você não especificar um valor, o padrão será provisioningscript.
ID do cliente de identidade gerenciada
provisioningScriptManagedIdentityClientId
Necessário se o pool estiver associado a mais de uma identidade gerenciada. ID do cliente da identidade gerenciada a ser usada para acessar os blobs nos contêineres de logs do script e do script de provisionamento. Se o Pool de DevOps Gerenciado tiver mais de uma identidade gerenciada associada, você deverá especificar qual delas usar aqui. Se o pool tiver apenas uma identidade, essa propriedade é opcional.
Reiniciar após a execução do script
provisioningScriptShouldRestart
Se o agente deve ser reiniciado depois de executar o script de provisionamento e antes de enviar tarefas para o agente. Se você não especificar um valor, o padrão será false.

A reinicialização após a execução do script aumenta o tempo de provisionamento e deve ser feita somente se o script de provisionamento fizer alterações que exigem uma reinicialização para entrar em vigor.

Note

Os scripts de provisionamento estão disponíveis na versão 2026-06-02 da API ou posterior.

Se você atualizar o pool usando uma versão anterior da API depois de configurar scripts de provisionamento, as configurações de script de provisionamento não serão preservadas.

Para definir as configurações de script de provisionamento para uma imagem, vá para a seção Imagens das configurações do pool e selecione ...>Configurar o script de provisionamento.

Captura de tela que mostra a opção Configurar menu de script de provisionamento.

Adicione ou atualize as configurações de script de provisionamento para a imagem e selecione Salvar.

Captura de tela que mostra as configurações do script de provisionamento.

Erros de provisionamento

A tabela a seguir lista as descrições e códigos de erro de script de provisionamento.

Código de falha Description
ProvisioningScriptDownloadFailed O script de provisionamento não pôde ser baixado no computador durante o provisionamento.
ProvisioningScriptAccessFailed O processo de provisionamento não pôde acessar o script de provisionamento. Normalmente, esse erro ocorre devido a um problema de acesso ou permissões ao recuperar o script.
ProvisioningScriptExecutionFailed O script de provisionamento foi baixado, mas falhou durante a execução no computador.
ProvisioningScriptLogUploadFailed O processo de provisionamento gerou logs do script de provisionamento, mas não conseguiu enviá-los.

Logs do script de provisionamento

Os logs de script de provisionamento contêm a saída padrão (stdout) e o erro padrão (stderr) gerados pelo script. Os pools gerenciados do DevOps gravam esses logs no contêiner de blobs mdpprovisioningscriptlogs na conta de armazenamento que você especificar. Os blobs são organizados em um diretório virtual cujo nome usa o formato mdp-{poolName}-{agentMachineName}. Esse diretório virtual contém um output diretório virtual com stderr.log arquivos e stdout.log um script diretório virtual com uma cópia do script executado.

Os Pools de DevOps gerenciados não gerenciam esses logs, portanto, você deve gerenciar a retenção deles na sua conta de armazenamento usando políticas de gerenciamento do ciclo de vida do Armazenamento de Blobs do Azure. A política de exemplo a seguir chamada DeleteOldMDPLogs exclui blobs de log três dias após a última modificação.

{
  "rules": [
    {
      "enabled": true,
      "name": "DeleteOldMDPLogs",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "delete": {
              "daysAfterModificationGreaterThan": 3
            }
          }
        },
        "filters": {
          "blobTypes": [
            "blockBlob"
          ],
          "prefixMatch": [
            "mdpprovisioningscriptlogs/"
          ]
        }
      }
    }
  ]
}

Você pode obter assistência de IA de GitHub Copilot para criar políticas de gerenciamento de ciclo de vida Armazenamento de Blobs do Azure. Personalize o prompt a seguir para criar políticas de gerenciamento do ciclo de vida do Armazenamento de Blobs do Azure.

Build an Azure Blob Storage lifecycle management policy named DeleteOldMDPLogs that deletes logs after three days.

Para obter mais detalhes sobre a política gerada pelo Copilot, você pode pedir Copilot para fornecer uma explicação da política gerada em seu prompt.

Copilot é alimentado pela IA, portanto, surpresas e erros são possíveis. Para mais informações, consulte as perguntas frequentes sobre o uso geral do Copilot.

Para obter mais informações, consulte Armazenamento de Blobs do Azure políticas de gerenciamento do ciclo de vida e configure uma política de gerenciamento de ciclo de vida.

Consulte também