Configurare gli script di provisioning per le immagini dei pool di DevOps gestiti

I pool DevOps gestiti offrono la possibilità di eseguire uno script di PowerShell (Windows) o uno script Bash (Linux) per un'immagine in un pool prima che venga assegnato a un agente per eseguire un processo. Questa funzionalità abilita scenari come l'installazione di ca radice attendibili e l'impostazione delle variabili di ambiente.

Importante

Gli script di provisioning sono attualmente in anteprima. La funzionalità potrebbe cambiare prima della disponibilità generale.

I pool DevOps gestiti usano un'identità gestita associata al pool per scaricare gli script da Archiviazione BLOB di Azure all'agente e caricare i log degli script di provisioning per la risoluzione dei problemi. Lo script di provisioning viene eseguito all'avvio dell'agente ed è possibile configurare l'agente per il riavvio dopo l'esecuzione dello script.

Per configurare un'immagine del pool DevOps gestito per eseguire uno script di provisioning, seguire questa procedura:

  1. Creare due contenitori BLOB in un account gestione rete virtuale di Azure: uno per gli script di provisioning e i file di supporto e uno per il caricamento dei log di script di provisioning. Carica gli script di provisioning e gli eventuali file di supporto nel contenitore BLOB degli script.
  2. Associare un'identità gestita al pool di DevOps gestito e assegnare i ruoli necessari all'identità gestita negli ambiti appropriati in modo che l'agente possa leggere gli script di provisioning e caricare i log degli script di provisioning.
  3. Configurate le immagini per utilizzare gli script di provisioning desiderati.

Prerequisiti

Creare i contenitori blob

I pool devOps gestiti scaricano gli script di provisioning e i relativi file di supporto dai BLOB in un contenitore in un account gestione rete virtuale di Azure. I pool DevOps gestiti richiedono due contenitori BLOB nell'account di archiviazione: uno per scaricare lo script di provisioning e i file di supporto e uno per il caricamento dei log di script di provisioning.

Creare i due contenitori BLOB seguenti nell'account gestione rete virtuale di Azure.

contenitore di archiviazione BLOB Description
Contenitore BLOB degli script. Se non si specifica un nome personalizzato nel punto di ingresso (provisioningScriptEntryPoint) quando si configura l'immagine per eseguire uno script di provisioning, il nome predefinito è provisioningscript. Contiene lo script di provisioning e tutti i file di supporto. Lo script di provisioning deve essere denominato Startup.ps1 per le immagini Windows o Startup.sh per le immagini Linux.
Contenitore dei log dello script di provisioning. Non è possibile configurare il nome del contenitore; deve essere mdpprovisioningscriptlogs.

I pool DevOps gestiti possono creare automaticamente il mdpprovisioningscriptlogs contenitore BLOB, ma per l'accesso con privilegi minimi è consigliabile creare il mdpprovisioningscriptlogs contenitore manualmente. Per altre informazioni, vedi Assegnare i ruoli di Azure all'identità gestita.
Contiene i stdout log e stderr generati dallo script di provisioning e una copia dello script. I nomi dei blob utilizzano il nome del computer dell'agente come directory virtuale.

Carica lo script di provisioning e gli eventuali file di supporto nel contenitore blob degli script. Lo script di provisioning deve essere denominato Startup.ps1 per le immagini Windows o Startup.sh per le immagini Linux. È possibile includere qualsiasi file di supporto richiesto dagli script nel BLOB. All'avvio dell'agente, questi file vengono scaricati nella directory di lavoro dell'agente e lo script di provisioning viene eseguito da questa posizione.

Assegnare ruoli di Azure all'identità gestita

I pool DevOps gestiti usano un'identità gestita per accedere ai contenitori blob per gli script di provisioning e i log degli script di provisioning. È necessario associare un'identità gestita al pool devOps gestito e assegnare i ruoli specificati all'identità gestita negli ambiti descritti in questa sezione. Se il pool devOps gestito non ha un'identità gestita, crearne uno seguendo la procedura descritta in Configurare un'identità gestita per il pool DevOps gestito.

  • Se il pool DevOps gestito ha una sola identità gestita associata, tale identità viene utilizzata per accedere allo script di provisioning e ai contenitori dei log dello script di provisioning.
  • Se il tuo Managed DevOps Pool ha più di un'identità gestita associata, designa un'identità gestita specifica da usare per gli script di provisioning specificando la proprietà ID client dell'identità gestita (provisioningScriptManagedIdentityResourceId) quando configuri l'immagine per usare uno script di provisioning.

Assegnare i ruoli nella tabella seguente all'identità gestita associata al Managed DevOps Pool negli ambiti indicati per consentire all'agente di scaricare gli script e caricare i log dello script di provisioning. Per altre informazioni sull'assegnazione di ruoli Azure, vedere Passaggi per assegnare un ruolo Azure.

Ruolo Scope
Lettore dei dati del BLOB di archiviazione Ambito del contenitore blob degli script Se non si specifica un nome nel punto di ingresso (provisioningScriptEntryPoint) quando si configura l'immagine per eseguire uno script di provisioning, il nome predefinito è provisioningscript.
Collaboratore ai dati di Storage Blob Per l'accesso con privilegi minimi, creare manualmente il contenitore dei log di script di provisioning (mdpprovisioningscriptlogs) e assegnare il ruolo all'identità gestita nell'ambito del contenitore BLOB.

Se si desidera che Managed DevOps Pools crei il container, assegnare il ruolo all'identità gestita a livello dell'account di archiviazione. Se si assegna il ruolo Collaboratore dati BLOB di archiviazione nell'ambito dell'account di archiviazione, non è necessario assegnare il ruolo Lettore dati BLOB di archiviazione nell'ambito del contenitore di script.

Configura l'immagine per utilizzare lo script di provisioning

Per usare uno script di provisioning con un'immagine, configurare le proprietà dell'immagine seguenti.

Proprietà Description
ID risorsa dell'account di archiviazione
provisioningScriptStorageAccountResourceId
Obbligatorio. L'ID risorsa dell'account di archiviazione che contiene il contenitore di script (nome predefinito provisioningscript) e il contenitore mdpprovisioningscriptlogs.
punto di ingresso
provisioningScriptEntryPoint
Nome del contenitore BLOB che contiene lo script di provisioning e i file di supporto. Se non si specifica un valore, il valore predefinito è provisioningscript.
ID client dell'identità gestita
provisioningScriptManagedIdentityClientId
Obbligatorio se il pool è associato a più identità gestite. ID client dell'identità gestita da usare per accedere ai BLOB nello script e nei contenitori dei log di script di provisioning. Se il pool devOps gestito ha più di un'identità gestita associata, è necessario specificarne una da usare qui. Se il pool ha una sola identità, questa proprietà è facoltativa.
Riavviare dopo l'esecuzione dello script
provisioningScriptShouldRestart
Indica se l'agente deve essere riavviato dopo l'esecuzione dello script di provisioning e prima dell'invio di processi all'agente. Se non si specifica un valore, il valore predefinito è false.

Il riavvio dopo l'esecuzione dello script aumenta il tempo di provisioning e deve essere eseguito solo se lo script di provisioning apporta modifiche che richiedono l'applicazione di un riavvio.

Annotazioni

Gli script di provisioning sono disponibili nella versione 2026-06-02 dell'API o versioni successive.

Se si aggiorna il pool usando una versione precedente dell'API dopo la configurazione degli script di provisioning, le impostazioni dello script di provisioning non vengono mantenute.

Per configurare le impostazioni dello script di provisioning per un'immagine, passare alla sezione Immagini delle impostazioni del pool e selezionare ...>Configurare lo script di provisioning.

Schermata che mostra l'opzione di menu

Aggiungere o aggiornare le impostazioni dello script di provisioning per l'immagine e selezionare Salva.

Screenshot che mostra le impostazioni di configurazione dello script di provisioning.

Errori di provisioning di sistema

Nella tabella seguente sono elencati i codici di errore e le descrizioni degli script di provisioning.

Codice di errore Description
ProvisioningScriptDownloadFailed Non è stato possibile scaricare lo script di provisioning sul computer durante la fase di provisioning.
ProvisioningScriptAccessFailed Il processo di provisioning non è riuscito ad accedere allo script di provisioning. In genere, questo errore si verifica a causa di un problema di accesso o autorizzazioni durante il recupero dello script.
ProvisioningScriptExecutionFailed Lo script di provisioning è stato scaricato ma non è riuscito durante l'esecuzione nel computer.
ProvisioningScriptLogUploadFailed Il processo di provisioning ha generato i log degli script di provisioning, ma non è stato possibile caricarli.

Log degli script di provisioning

I log degli script di provisioning contengono l'output standard (stdout) e l'errore standard (stderr) generati dallo script. I pool DevOps gestiti scrivono questi log nel contenitore BLOB mdpprovisioningscriptlogs dell'account di archiviazione specificato. I BLOB sono organizzati in una directory virtuale il cui nome usa il formato mdp-{poolName}-{agentMachineName}. Questa directory virtuale contiene una directory virtuale output con file stderr.log e stdout.log, e una directory virtuale script con una copia dello script che è stato eseguito.

I pool DevOps gestiti non gestiscono questi log, quindi è necessario gestire la conservazione nell'account di archiviazione usando i criteri di gestione del ciclo di vita Archiviazione BLOB di Azure. Il criterio di esempio seguente denominato DeleteOldMDPLogs elimina i BLOB di log tre giorni dopo l'ultima modifica.

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

È possibile ottenere assistenza per l'intelligenza artificiale da GitHub Copilot per creare criteri di gestione del ciclo di vita Archiviazione BLOB di Azure. Personalizza il prompt seguente per creare i criteri di gestione del ciclo di vita di Archiviazione BLOB di Azure.

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

Per ottenere altri dettagli sui criteri generati da Copilot, è possibile chiedere Copilot di fornire una spiegazione dei criteri generati nella richiesta.

Copilot è alimentato dall'IA, quindi sono possibili sorprese ed errori. Per ulteriori informazioni, consultare le FAQ generali sull'utilizzo di Copilot.

Per altre informazioni, vedere Archiviazione BLOB di Azure criteri di gestione del ciclo di vita e Configurare i criteri di gestione del ciclo di vita.

Vedere anche