Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os Managed DevOps Pools oferecem a opção de executar um script PowerShell (Windows) ou um script Bash (Linux) para uma imagem num pool antes de ser atribuída a um agente para executar um trabalho. Esta funcionalidade permite cenários como a instalação de CAs raiz confiáveis e a definição de variáveis de ambiente.
Important
Os scripts de provisionamento estão atualmente em versão preliminar. A funcionalidade pode mudar antes da disponibilidade geral.
O Managed DevOps Pools utiliza uma identidade gerida associada ao seu pool para transferir os scripts do Armazenamento de Blobs do Azure para o agente e carregar os registos dos scripts de aprovisionamento para resolução de problemas. O script de provisionamento corre quando o agente inicia, e podes configurar o agente para reiniciar depois do script ser executado.
Para configurar uma imagem de Managed DevOps Pool para executar um script de provisionamento, execute os seguintes passos:
- Crie dois contentores de blob numa conta de Armazenamento de Blobs: um para os scripts de provisionamento e ficheiros de suporte, e outro para carregar registos de scripts de provisionamento. Carrega os teus scripts de provisionamento e quaisquer ficheiros de suporte para o contentor de blob de scripts.
- Associe uma identidade gerida ao seu Managed DevOps Pool e atribua os papéis necessários à identidade gerida nos escopos apropriados para que o agente possa ler os scripts de provisionamento e carregar os logs de scripts de provisionamento.
- Configura as tuas imagens para utilizar os scripts de provisionamento desejados.
Pré-requisitos
- Uma conta Armazenamento de Blobs do Azure. O tipo de conta do Armazenamento do Azure suportado para scripts de aprovisionamento de Managed DevOps Pools é Standard general-purpose v2.
- Um conjunto gerido de DevOps com uma identidade gerida associada. Se o seu Managed DevOps Pool não tiver uma identidade gerida, crie uma seguindo os passos em Configurar uma identidade gerida para o seu Managed DevOps Pool.
Crie os contentores de blobs
Os Pools DevOps Geridos descarregam scripts de provisionamento e os seus ficheiros de suporte a partir de blobs num contentor numa conta Armazenamento de Blobs. Os Pools DevOps Geridos requerem dois contentores de blob na conta de armazenamento: um para descarregar o script de provisionamento e os ficheiros de suporte, e outro para carregar os logs dos scripts de provisionamento.
Crie os seguintes dois contentores de blob na sua conta de Armazenamento de Blobs.
| Armazenamento de Blobs container | Description |
|---|---|
Contentor de blobs de scripts. Se não especificar um nome personalizado no Ponto de Entrada (provisioningScriptEntryPoint) ao configurar a sua imagem para executar um script de provisionamento, o nome padrão é provisioningscript. |
Contém o script de provisionamento e quaisquer ficheiros de suporte. O script de provisionamento deve ser nomeado Startup.ps1 para imagens do Windows ou Startup.sh para imagens do Linux. |
Contentor de registos do script de aprovisionamento. Não podes configurar este nome de contentor; tem de ser mdpprovisioningscriptlogs.Os Managed DevOps Pools podem criar automaticamente o contentor de blobs mdpprovisioningscriptlogs, mas, para um acesso com privilégios mínimos, recomendamos que crie manualmente o contentor mdpprovisioningscriptlogs. Para mais informações, consulte Atribuir funções do Azure à identidade gerida. |
Contém os registos stdout e stderr gerados pelo script de aprovisionamento e uma cópia do script. Os nomes dos blobs utilizam o nome da máquina do agente como diretório virtual. |
Carrega o teu script de provisionamento e quaisquer ficheiros de suporte para o contentor de blob do script. O script de provisionamento deve ser nomeado Startup.ps1 para imagens do Windows ou Startup.sh para imagens do Linux. Podes incluir quaisquer ficheiros de suporte exigidos pelos scripts no blob. Quando o agente inicia, estes ficheiros são descarregados para o diretório de trabalho do agente, e o script de provisionamento é executado a partir dessa localização.
Atribuir funções do Azure à identidade gerida
Managed DevOps Pools utiliza uma identidade gerida para aceder aos contentores de blobs dos scripts de provisionamento e aos registos desses scripts. Deve associar uma identidade gerida ao seu Pool de DevOps Gerido e atribuir as funções especificadas à identidade gerida nos âmbitos descritos nesta secção. Se o seu Managed DevOps Pool não tiver uma identidade gerida, crie uma seguindo os passos em Configurar uma identidade gerida para o seu Managed DevOps Pool.
- Se o seu Managed DevOps Pool tiver uma única identidade gerida associada, essa identidade é utilizada para aceder aos contentores do script de aprovisionamento e dos registos do script de aprovisionamento.
- Se o seu Managed DevOps Pool tiver mais do que uma identidade gerida associada, designe uma identidade gerida específica para usar no provisionamento de scripts, especificando a propriedade Managed ID do cliente (
provisioningScriptManagedIdentityResourceId) ao configurar a sua imagem para usar um script de provisionamento.
Atribuir os papéis na tabela seguinte à identidade gerida associada ao Managed DevOps Pool nos escopos especificados para permitir que o agente descarregue os scripts e carregue os registos de scripts de provisionamento. Para mais informações sobre atribuição de funções no Azure, consulte Passos para atribuir uma função no Azure.
| Função | Scope |
|---|---|
| Leitor de Dados de Armazenamento Blob | Escopo do contentor blob do script. Se não especificar um nome no Ponto de Entrada (provisioningScriptEntryPoint) ao configurar a sua imagem para executar um script de provisionamento, o nome predefinido é provisioningscript. |
| Contribuidor de Dados de Armazenamento Blob | Para acesso com privilégios mínimos, crie manualmente o contentor de registos do script de aprovisionamento (mdpprovisioningscriptlogs) e atribua a função à identidade gerida ao nível do âmbito desse contentor de blobs.Se pretender que os Conjuntos de DevOps Geridos criem o contentor, atribua a função à identidade gerida no âmbito da conta de armazenamento. Se atribuir o papel Storage Blob Data Contributor ao nível da conta de armazenamento, não é necessário atribuir o papel Storage Blob Data Reader ao nível do contentor de scripts. |
Configure a sua imagem para usar o script de provisionamento
Para usar um script de provisionamento com uma imagem, configure as seguintes propriedades da imagem.
| Property | Description |
|---|---|
ID de recurso da conta de armazenamentoprovisioningScriptStorageAccountResourceId |
Obrigatório. O ID de recurso da conta de armazenamento que contém o contentor do script (nome predefinido provisioningscript) e o contentor mdpprovisioningscriptlogs. |
Ponto de entradaprovisioningScriptEntryPoint |
O nome do contentor de blob que contém o script de provisionamento e os ficheiros de suporte. Se você não especificar um valor, o padrão será provisioningscript. |
ID de cliente de identidade geridaprovisioningScriptManagedIdentityClientId |
Obrigatório se o seu pool estiver associado a mais do que uma identidade gerida. O ID do cliente da identidade gerida a usar para aceder aos blobs no script e provisionar logs de scripts nos contentores. Se o seu Managed DevOps Pool tiver mais do que uma identidade gerida associada, deve especificar qual delas deve usar aqui. Se a sua piscina tiver apenas uma identidade, esta propriedade é opcional. |
Reiniciar após a execução do scriptprovisioningScriptShouldRestart |
Se o agente deve reiniciar após executar o script de provisionamento e antes de enviar trabalhos para o agente. Se você não especificar um valor, o padrão será false.Reiniciar após a execução do script aumenta o tempo de provisionamento e só deve ser feito se o script de provisionamento fizer alterações que exijam um reinício para ter efeito. |
Note
Os scripts de aprovisionamento estão disponíveis na versão 2026-06-02 da API ou posterior.
Se atualizar o seu pool usando uma versão anterior da API depois de configurar os scripts de provisionamento, as definições do script de provisionamento não são preservadas.
- portal do Azure
- Modelo ARM
- CLI do Azure
- Bicep
Para configurar as definições do script de provisionamento para uma imagem, vá à secção Imagens das definições do pool e selecione ...>Configurar script de provisionamento.
Adicione ou atualize as definições do script de provisão para a imagem e selecione Guardar.
Erros de provisionamento
A tabela seguinte lista os códigos de erro e as respetivas descrições dos scripts de aprovisionamento.
| Código de falha | Description |
|---|---|
ProvisioningScriptDownloadFailed |
O script de provisionamento não podia ser descarregado para a máquina durante o provisionamento. |
ProvisioningScriptAccessFailed |
O processo de provisionamento não conseguiu aceder ao script de provisionamento. Normalmente, este erro ocorre devido a um problema de acesso ou permissões ao recuperar o script. |
ProvisioningScriptExecutionFailed |
O script de provisionamento foi descarregado mas falhou enquanto estava a correr na máquina. |
ProvisioningScriptLogUploadFailed |
O processo de provisionamento gerou registos do script de provisionamento, mas não conseguiu enviá-los. |
Provisionamento de logs de scripts
Os logs de script de provisionamento contêm a saída padrão (stdout) e o erro padrão (stderr) gerados pelo script. Os Conjuntos de DevOps geridos escrevem estes registos no contentor de blobs mdpprovisioningscriptlogs na conta de armazenamento que indicar. Os blobs estão organizados sob um diretório virtual cujo nome utiliza o formato mdp-{poolName}-{agentMachineName}. Este diretório virtual contém um output diretório virtual com stderr.log e stdout.log ficheiros, e um script diretório virtual com uma cópia do script que foi executado.
O Managed DevOps Pools não gere estes registos, por isso deve gerir a sua retenção na sua conta de armazenamento usando as políticas de gestão do ciclo de vida do Armazenamento de Blobs do Azure. A política de exemplo seguinte, denominada DeleteOldMDPLogs, elimina blobs de registo três dias após a sua última modificação.
{
"rules": [
{
"enabled": true,
"name": "DeleteOldMDPLogs",
"type": "Lifecycle",
"definition": {
"actions": {
"baseBlob": {
"delete": {
"daysAfterModificationGreaterThan": 3
}
}
},
"filters": {
"blobTypes": [
"blockBlob"
],
"prefixMatch": [
"mdpprovisioningscriptlogs/"
]
}
}
}
]
}
Pode obter assistência de IA no GitHub Copilot para construir políticas de gestão do ciclo de vida do Armazenamento de Blobs do Azure. Personalize o seguinte prompt para criar políticas de gestão 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 apólice gerada pelo Copilot, pode pedir ao Copilot que forneça uma explicação da apólice gerada no seu prompt.
O Copilot é alimentado por IA, por isso surpresas e erros são possíveis. Para mais informações, consulte Perguntas frequentes sobre o uso geral do Copilot.
Para mais informações, consulte as políticas de gestão do ciclo de vida do Armazenamento de Blobs do Azure e Configurar uma política de gestão do ciclo de vida.