Konfigurera etableringsskript för hanterade DevOps-pooler

Hanterade DevOps-pooler ger möjlighet att köra ett PowerShell-skript (Windows) eller ett Bash-skript (Linux) för en avbildning i en pool innan det tilldelas till en agent för att köra ett jobb. Den här funktionen möjliggör scenarier som att installera betrodda rotcertifikatutfärdare och ställa in miljövariabler.

Important

Provisioneringsskript finns för närvarande som förhandsversion. Funktionen kan ändras före allmän tillgänglighet.

Hanterade DevOps-pooler använder en hanterad identitet som är associerad med poolen för att ladda ned skripten från Azure Blob Storage till agenten och ladda upp etableringsskriptloggar för felsökning. Etableringsskriptet körs när agenten startar och du kan konfigurera agenten att starta om när skriptet har körts.

Utför följande steg för att konfigurera en hanterad DevOps-poolavbildning för att köra ett etableringsskript:

  1. Skapa två blobcontainrar i ett Blob Storage konto: en för etableringsskripten och stödfilerna och en för att ladda upp etableringsskriptloggar. Ladda upp dina etableringsskript och eventuella stödfiler till skriptblobcontainern.
  2. Associera en hanterad identitet med din hanterade DevOps-pool och tilldela de roller som krävs till den hanterade identiteten i lämpliga omfång så att agenten kan läsa etableringsskripten och ladda upp etableringsskriptloggar.
  3. Konfigurera avbildningarna så att de använder önskade provisioneringsskript.

Förutsättningar

Skapa blobcontainrarna

Hanterade DevOps-pooler laddar ned provisioneringsskript och tillhörande filer från blobar i en container i ett Blob Storage-konto. Hanterade DevOps-pooler kräver två blobcontainrar i lagringskontot: en för att ladda ned etableringsskriptet och stödfiler och en för att ladda upp etableringsskriptloggar.

Skapa följande två blobcontainrar i ditt Blob Storage konto.

Blob Storage-container Description
Blobcontainer för skript. Om du inte anger ett anpassat namn i Startpunkt (provisioningScriptEntryPoint) när du konfigurerar avbildningen för att köra ett etableringsskript är provisioningscriptstandardnamnet . Innehåller etableringsskriptet och eventuella stödfiler. Etableringsskriptet måste namnges Startup.ps1 för Windows avbildningar eller Startup.sh för Linux-avbildningar.
Container för etableringsskriptloggar. Du kan inte konfigurera det här containernamnet. det måste vara mdpprovisioningscriptlogs.

Hanterade DevOps-pooler kan skapa mdpprovisioningscriptlogs blobcontainern automatiskt, men för åtkomst med lägsta behörighet rekommenderar vi att du skapar containern mdpprovisioningscriptlogs manuellt. Mer information finns i Tilldela Azure roller till den hanterade identiteten.
Innehåller loggarna stdout och stderr som genereras av etableringsskriptet och en kopia av skriptet. Blobnamnen använder agentens datornamn som en virtuell katalog.

Ladda upp ditt etableringsskript och eventuella stödfiler till blobcontainern för skript. Etableringsskriptet måste namnges Startup.ps1 för Windows avbildningar eller Startup.sh för Linux-avbildningar. Du kan inkludera alla stödfiler som krävs av skripten i bloben. När agenten startar laddas dessa filer ned till agentens arbetskatalog och etableringsskriptet körs från den platsen.

Tilldela Azure roller till den hanterade identiteten

Hanterade DevOps-pooler använder en hanterad identitet för att komma åt blobcontainrarna för etableringsskripten och etableringsskriptloggarna. Du måste associera en hanterad identitet med din hanterade DevOps-pool och tilldela de angivna rollerna till den hanterade identiteten i de omfång som beskrivs i det här avsnittet. Om din hanterade DevOps-pool inte har någon hanterad identitet skapar du en genom att följa stegen i Konfigurera en hanterad identitet för din hanterade DevOps-pool.

  • Om din hanterade DevOps-pool har en enda associerad hanterad identitet används den identiteten för att komma åt containrar för etableringsskript och etableringsskriptloggar.
  • Om din hanterade DevOps-pool har mer än en associerad hanterad identitet anger du en specifik hanterad identitet som ska användas för etableringsskript genom att ange egenskapen Hanterad identitetsklient-ID (provisioningScriptManagedIdentityResourceId) när du konfigurerar avbildningen för att använda ett etableringsskript.

Tilldela rollerna i följande tabell till den hanterade identitet som är associerad med den hanterade DevOps-poolen i de angivna omfången så att agenten kan ladda ned skripten och ladda upp loggarna för provisioneringsskriptet. Mer information om hur du tilldelar Azure roller finns i Steg för att tilldela en Azure roll.

Befattning Scope
Storage Blob Data Reader Omfång för skriptblobbbehållaren Om du inte anger ett namn i Startpunkt (provisioningScriptEntryPoint) när du konfigurerar avbildningen för att köra ett etableringsskript är provisioningscriptstandardnamnet .
Storage Blob Data-bidragsgivare För åtkomst med lägsta behörighet skapar du containern för etableringsskriptloggar manuellt (mdpprovisioningscriptlogs) och tilldelar rollen till den hanterade identiteten i blobcontainerns omfång.

Om du vill att Managed DevOps Pools ska skapa containern, tilldela rollen till den hanterade identiteten på lagringskontonivå. Om du tilldelar rollen Storage Blob Data Contributor i lagringskontots omfång behöver du inte tilldela rollen Storage Blob Data Reader i skriptcontainerns omfång.

Konfigurera avbilden så att den använder provisioneringsskriptet

Om du vill använda ett etableringsskript med en avbildning konfigurerar du följande bildegenskaper.

Property Description
Resurs-ID för lagringskonto
provisioningScriptStorageAccountResourceId
Obligatoriska. Resurs-ID för lagringskontot som innehåller skriptcontainern (standardnamn provisioningscript) och containern mdpprovisioningscriptlogs .
Startpunkt
provisioningScriptEntryPoint
Namnet på blobcontainern som innehåller etableringsskriptet och stödfilerna. Om du inte anger något värde är provisioningscriptstandardvärdet .
Klient-ID för hanterad identitet
provisioningScriptManagedIdentityClientId
Krävs om din pool är associerad med mer än en hanterad identitet. Klient-ID för den hanterade identitet som ska användas för åtkomst till blobarna i skript- och etableringsskriptloggcontainrar. Om din hanterade DevOps-pool har mer än en associerad hanterad identitet måste du ange vilken som ska användas här. Om din pool bara har en identitet är den här egenskapen valfri.
Starta om efter skriptkörning
provisioningScriptShouldRestart
Om agenten ska startas om efter att ha kört etableringsskriptet och innan jobb skickas till agenten. Om du inte anger något värde är falsestandardvärdet .

Omstart efter skriptkörning ökar etableringstiden och bör endast göras om etableringsskriptet gör ändringar som kräver att en omstart börjar gälla.

Note

Etableringsskript är tillgängliga i API-version 2026-06-02 eller senare.

Om du uppdaterar poolen med hjälp av en tidigare API-version efter konfigurationen av etableringsskript bevaras inte inställningarna för etableringsskriptet.

Om du vill konfigurera inställningar för etableringsskript för en avbildning går du till avsnittet Bilder i poolinställningarna och väljer ...>Konfigurera etableringsskript.

Skärmbild som visar menyalternativet Konfigurera etableringsskript.

Lägg till eller uppdatera inställningarna för etableringsskriptet för avbildningen och välj Spara.

Skärmbild som visar inställningarna för Konfigurera etableringsskript.

Provisioneringsfel

Följande tabell listar etableringsskriptets felkoder och beskrivningar.

Felkod Description
ProvisioningScriptDownloadFailed Det gick inte att ladda ned etableringsskriptet till datorn under etableringen.
ProvisioningScriptAccessFailed Etableringsprocessen kunde inte komma åt etableringsskriptet. Det här felet uppstår vanligtvis på grund av ett problem med åtkomst eller behörigheter när skriptet hämtas.
ProvisioningScriptExecutionFailed Etableringsskriptet laddades ned men misslyckades när det kördes på datorn.
ProvisioningScriptLogUploadFailed Etableringsprocessen genererade etableringsskriptloggar, men det gick inte att ladda upp dem.

Loggar för provisioneringsskript

Etableringsskriptloggar innehåller standardutdata (stdout) och standardfel (stderr) som genereras av skriptet. Hanterade DevOps-pooler skriver dessa loggar till mdpprovisioningscriptlogs blobcontainern i det lagringskonto som du anger. Blobarna ordnas under en virtuell katalog vars namn använder formatet mdp-{poolName}-{agentMachineName}. Den här virtuella katalogen innehåller en output virtuell katalog med stderr.log och stdout.log filer samt en script virtuell katalog med en kopia av skriptet som kördes.

Hanterade DevOps-pooler hanterar inte dessa loggar, så du måste hantera deras kvarhållning i ditt lagringskonto med hjälp av Azure Blob Storage principer för livscykelhantering. Följande exempelprincip med namnet DeleteOldMDPLogs tar bort loggblobar tre dagar efter att de senast ändrades.

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

Du kan få AI-hjälp från GitHub Copilot för att skapa principer för livscykelhantering Azure Blob Storage. Anpassa följande uppmaning för att skapa principer för Azure Blob Storage livscykelhantering.

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

Om du vill få mer information om principen som genereras av Copilot kan du be Copilot att ge en förklaring av den genererade principen i din fråga.

Copilot drivs av AI, så överraskningar och misstag är möjliga. För mer information, se Vanliga frågor om allmänt bruk av Copilot.

Mer information finns i Azure Blob Storage principer för livscykelhantering och Konfigurera en livscykelhanteringsprincip.

Se även