Dela via


Skalningsuppsättningsagenter för virtuella Azure-datorer

Azure DevOps Services

Azure Virtual Machine Scale Set-agenter, nedan kallade skalningsuppsättningsagenter, är en form av lokalt installerade agenter som kan skalas automatiskt för att uppfylla dina krav. Den här elasticiteten minskar behovet av att köra dedikerade agenter hela tiden. Till skillnad från Microsoft-hostade agenter har du möjlighet att bestämma storleken på och bilden av de datorer som agenterna körs på.

Dricks

Hanterade DevOps-pooler är en utveckling av Azure DevOps agentpooler för VM-skalningsuppsättningar, vilket förenklar skapandet av anpassade pooler ytterligare, genom att förbättra skalbarheten och tillförlitligheten för anpassade pooler. Hanterade DevOps-pooler är en fullständigt hanterad tjänst där virtuella datorer eller containrar som driver agenterna finns i en Microsoft Azure-prenumeration och inte i din egen Azure-prenumeration, som när du använder Azure DevOps agentpooler för VM-skalningsuppsättningar. Mer information finns i dokumentationen om Hanterade DevOps-pooler.

Om du gillar Microsoft-värdbaserade agenter men begränsas av vad de erbjuder bör du överväga skalningsuppsättningsagenter. Nedan följer några exempel:

  • Du behöver mer minne, mer processor, mer lagring eller mer I/O än vad vi erbjuder i interna Microsoft-värdbaserade agenter.
  • Du behöver en virtuell NCv2-dator med särskilda instruktionsuppsättningar för maskininlärning.
  • Du behöver distribuera till en privat Azure App Service i ett privat virtuellt nätverk utan inkommande anslutning.
  • Du måste öppna företagets brandvägg för specifika IP-adresser så att Microsoft-värdbaserade agenter kan kommunicera med dina servrar.
  • Du måste begränsa nätverksanslutningen för agentdatorer och tillåta att de endast når godkända platser.
  • Du kan inte få tillräckligt med agenter från Microsoft för att uppfylla dina behov.
  • Dina jobb överskrider tidsgränsen för Microsofts värdbaserade agent.
  • Du kan inte partitionera Parallella jobb med Microsoft-värd till enskilda projekt eller team i din organisation.
  • Du vill köra flera jobb i följd på en agent för att dra nytta av inkrementella paketcacheminnen på käll- och datornivå.
  • Du vill köra konfigurations- eller cacheuppvärmning innan en agent börjar acceptera jobb.

Om du gillar lokalt installerade agenter men önskar att du kunde förenkla hanteringen av dem bör du överväga skalningsuppsättningsagenter. Nedan följer några exempel:

  • Du vill inte köra dedikerade agenter dygnet runt. Du vill avetablera agentdatorer som inte används för att köra jobb.
  • Du kör icke betrodd kod i pipelinen och vill återställa agentdatorer efter varje jobb.
  • Du vill förenkla uppdateringen av basavbildningen för dina agenter regelbundet.

Kommentar

  • Du kan inte köra Mac-agenter med skalningsuppsättningar. Du kan bara köra Windows- eller Linux-agenter på det här sättet.

  • Användning av vm-skalningsuppsättningar med agentpooler för Azure DevOps Services stöds endast för Azure Public -molnet (global tjänst). För närvarande stöder agentpooler för vm-skalningsuppsättningar inte några andra nationella molnerbjudanden.

  • Du bör inte associera vm-skalningsuppsättningar till flera pooler.

Skapa skalningsuppsättningen

Som förberedelse för att skapa skalningsuppsättningsagenter måste du först skapa en VM-skalningsuppsättning i Azure Portal. Du måste skapa vm-skalningsuppsättningen på ett visst sätt så att Azure Pipelines kan hantera den. I synnerhet måste du inaktivera automatisk skalning så att Azure Pipelines kan avgöra hur skalning ska utföras baserat på antalet inkommande pipelinejobb. Vi rekommenderar att du använder följande steg för att skapa skalningsuppsättningen.

I följande exempel skapas en ny resursgrupp och vm-skalningsuppsättning med Azure Cloud Shell med hjälp av UbuntuLTS VM-avbildningen.

Kommentar

I det här exemplet används UbuntuLTS VM-avbildningen för skalningsuppsättningen. Om du behöver en anpassad VM-avbildning som grund för din agent skapar du den anpassade avbildningen innan du skapar skalningsuppsättningen genom att följa stegen i Skapa en skalningsuppsättning med anpassad avbildning, programvara eller diskstorlek.

  1. Bläddra till Azure Cloud Shellhttps://shell.azure.com/.

  2. Kör följande kommando för att verifiera din azure-standardprenumeration.

    az account list -o table
    

    Om din önskade prenumeration inte visas som standard väljer du önskad prenumeration.

    az account set -s <your subscription ID>
    
  3. Skapa en resursgrupp för vm-skalningsuppsättningen.

    az group create \
    --location westus \
    --name vmssagents
    
  4. Skapa en VM-skalningsuppsättning i resursgruppen. I det här exemplet anges Ubuntu204 VM-avbildningen.

    az vmss create \
    --name vmssagentspool \
    --resource-group vmssagents \
    --image Ubuntu2204 \
    --vm-sku Standard_D2_v4 \
    --storage-sku StandardSSD_LRS \
    --authentication-type SSH \
    --generate-ssh-keys \
    --instance-count 2 \
    --disable-overprovision \
    --upgrade-policy-mode manual \
    --single-placement-group false \
    --platform-fault-domain-count 1 \
    --load-balancer "" \
    --orchestration-mode Uniform
    

    Kommentar

    Azure Pipelines stöder inte överetablering och automatisk skalning av skalningsuppsättningar. Kontrollera att båda funktionerna är inaktiverade för din skalningsuppsättning.

    Eftersom Azure Pipelines hanterar skalningsuppsättningen krävs eller rekommenderas följande inställningar:

    • --disable-overprovision -krävs
    • --upgrade-policy-mode manual -krävs
    • --load-balancer "" – Azure Pipelines kräver ingen lastbalanserare för att dirigera jobb till agenterna i skalningsuppsättningsagentpoolen, men att konfigurera en lastbalanserare är ett sätt att hämta en IP-adress för dina skalningsuppsättningsagenter som du kan använda för brandväggsregler. Ett annat alternativ för att hämta en IP-adress för skalningsuppsättningsagenterna är att skapa skalningsuppsättningen med hjälp av --public-ip-address alternativen. Mer information om hur du konfigurerar skalningsuppsättningen med en lastbalanserare eller en offentlig IP-adress finns i dokumentationen om vm-skalningsuppsättningar och az vmss create.
    • --instance-count 2 – Den här inställningen krävs inte, men du kan kontrollera att skalningsuppsättningen är fullt fungerande innan du skapar en agentpool. Det kan ta flera minuter att skapa de två virtuella datorerna. Senare när du skapar agentpoolen tar Azure Pipelines bort dessa två virtuella datorer och skapar nya.

    Viktigt!

    Om du kör det här skriptet med Hjälp av Azure CLI i Windows måste du omsluta "" med --load-balancer "" enkla citattecken så här: --load-balancer '""'

    Om storleken på den virtuella datorn stöder tillfälliga OS-diskar är följande parametrar för att aktivera tillfälliga OS-diskar valfria, men vi rekommenderar att du förbättrar återställningstiderna för virtuella datorer.

    • --ephemeral-os-disk true
    • --os-disk-caching readonly

    Viktigt!

    Tillfälliga OS-diskar stöds inte i alla VM-storlekar. En lista över vm-storlekar som stöds finns i Tillfälliga OS-diskar för virtuella Azure-datorer.

    Välj valfri Linux- eller Windows-avbildning – antingen från Azure Marketplace eller din egen anpassade avbildning – för att skapa skalningsuppsättningen. Installera inte Azure Pipelines-agenten i avbildningen i förväg. Azure Pipelines installerar automatiskt agenten när den etablerar nya virtuella datorer. I exemplet ovan använde vi en oformaterad UbuntuLTS bild. Anvisningar om hur du skapar och använder en anpassad avbildning finns i Vanliga frågor och svar.

    Välj valfri VM SKU och lagrings-SKU.

    Kommentar

    Licensöverväganden begränsar oss från att distribuera Microsoft-värdbaserade avbildningar. Vi kan inte ange dessa avbildningar som du kan använda i dina skalningsuppsättningsagenter. Men de skript som vi använder för att generera dessa avbildningar är öppen källkod. Du kan använda dessa skript och skapa egna anpassade avbildningar.

  5. När du har skapat skalningsuppsättningen går du till din skalningsuppsättning i Azure Portal och kontrollerar följande inställningar:

    • Uppgraderingsprincip – manuell

      Verifiera uppgraderingsprincipen.

      Du kan också verifiera den här inställningen genom att köra följande Azure CLI-kommando.

      az vmss show --resource-group vmssagents --name vmssagentspool --output table
      
      Name            ResourceGroup    Location    Zones    Capacity    Overprovision    UpgradePolicy
      --------------  ---------------  ----------  -------  ----------  ---------------  ---------------
      vmssagentspool  vmssagents       westus               0           False            Manual
      
    • Skalning – manuell skalning

      Verifiera en manuell skalningsprincip.

Viktigt!

Azure Pipelines stöder inte instansskydd. Kontrollera att instansskydden för instanser av instanser för in- och skalningsuppsättningar är inaktiverade.

Orkestreringslägen

Skalningsuppsättningar för virtuella Azure-datorer kan konfigureras med två orkestreringslägen: Enhetlig och flexibel. Stöd för Azure Pipelines för enhetlig orkestrering är allmänt tillgängligt för alla kunder.

Med läget Flexibel orkestrering kan Azure Pipelines köa flera skalningsuppsättningsåtgärder parallellt. Azure Pipelines-stöd för flexibel orkestrering är tillgängligt på begäran och kan utvärderas. Kundernas användningsmönster måste indikera en betydande fördel med det. Sådana kunder har storskaliga uppsättningar, återanvänder inte agenter för flera jobb, kör flera kortlivade jobb parallellt och använder uteslutande tillfälliga diskar på sina virtuella datorer. Kontakta vårt supportteam om du vill använda den här funktionen.

Skapa skalningsuppsättningsagentpoolen

  1. Gå till dina Azure DevOps Project-inställningar, välj Agentpooler under Pipelines och välj Lägg till pool för att skapa en ny agentpool.

    Skapa agentpool.

    Viktigt!

    Du kan skapa din skalningsuppsättningspool i Projektinställningar eller Organisationsinställningar, men när du tar bort en skalningsuppsättningspool måste du ta bort den från Organisationsinställningar och inte Projektinställningar.

  2. Välj Azure Virtual Machine Scale Set för pooltypen. Välj den Azure-prenumeration som innehåller skalningsuppsättningen, välj Auktorisera och välj önskad VM-skalningsuppsättning från den prenumerationen. Om du har en befintlig tjänstanslutning kan du välja den i listan i stället för prenumerationen.

    Viktigt!

    • Om du vill konfigurera en skalningsuppsättningsagentpool måste du ha behörighet som ägare eller administratör för användaråtkomst för den valda prenumerationen. Om du har någon av dessa behörigheter men får ett fel när du väljer Auktorisera kan du läsa felsökning.

    • Den enda tjänstanslutning som stöds för närvarande är en AZURE Resource Manager-tjänstanslutning (ARM) baserat på en nyckel för tjänstens huvudnamn. ARM-tjänstanslutningar baserade på en certifikatautentiseringsuppgift eller en hanterad identitet misslyckas. När du försöker lista befintliga skalningsuppsättningar i din prenumeration visas ett fel som liknar detta:

      Invalid Service Endpoint with Id <guid> and Scope <guid>

  3. Välj önskad VM-skalningsuppsättning från den prenumerationen.

  4. Ange ett namn för agentpoolen.

  5. Konfigurera följande alternativ:

    • Ta automatiskt bort virtuella datorer efter varje användning – En ny vm-instans används för varje jobb. Den virtuella datorn kopplas från när ett jobb har körts och återskapas innan ett annat jobb hämtas.
    • Spara en feltillståndsagent för undersökning – Om du vill spara virtuella agentdatorer som inte är felfria för felsökning i stället för att ta bort dem.
    • Maximalt antal virtuella datorer i skalningsuppsättningen – Azure Pipelines skalar automatiskt ut antalet agenter, men överskrider inte den här gränsen.
    • Antal agenter som ska hållas i vänteläge – Azure Pipelines skalas automatiskt i antalet agenter, men ser till att det alltid finns så många agenter tillgängliga för att köra nya jobb. Om du anger Antal agenter som ska hållas i vänteläge till 0, till exempel för att spara kostnader för en låg mängd jobb, startar Azure Pipelines bara en virtuell dator när den har ett jobb.
    • Fördröjning i minuter innan överflödiga inaktiva agenter tas bort – För att ta hänsyn till variabiliteten i byggbelastningen under hela dagen väntar Azure Pipelines under den angivna varaktigheten innan en överflödig inaktiv agent tas bort.
    • Konfigurera virtuella datorer för att köra interaktiva tester (endast Windows Server OS) – Windows-agenter kan antingen konfigureras att köras utan relevans med automatisk loggning och med interaktivt användargränssnitt, eller så kan de konfigureras att köras med förhöjd behörighet. Markera den här kryssrutan om du vill köra ej relevant med interaktivt användargränssnitt. I båda fallen är agentanvändaren medlem i gruppen Administratörer.
  6. När inställningarna har konfigurerats väljer du Skapa för att skapa agentpoolen.

Använda skalningsuppsättningsagentpool

Att använda en skalningsuppsättningsagentpool liknar alla andra agentpooler. Du kan använda den i klassiska bygg-, versions- eller YAML-pipelines. Användarbehörigheter, pipelinebehörigheter, godkännanden och andra kontroller fungerar på samma sätt som i andra agentpooler. Mer information finns i Agentpooler.

Viktigt!

Försiktighet måste iakttas när du gör ändringar direkt i skalningsuppsättningen i Azure Portal.

  • Du kanske inte ändrar många av konfigurationsinställningarna för skalningsuppsättningar i Azure Portal. Azure Pipelines uppdaterar konfigurationen av skalningsuppsättningen. Eventuella manuella ändringar som du gör i skalningsuppsättningen kan störa driften av Azure Pipelines.
  • Du kan inte ändra namn på eller ta bort en skalningsuppsättning utan att först ta bort skalningsuppsättningspoolen i Azure Pipelines.

Så hanterar Azure Pipelines skalningsuppsättningen

När skalningsuppsättningsagentpoolen har skapats skalar Azure Pipelines automatiskt agentdatorerna.

Azure Pipelines tar exempel på tillståndet för agenterna i poolen och virtuella datorer i skalningsuppsättningen var 5:e minut. Beslutet att skala in eller ut baseras på antalet inaktiva agenter vid den tidpunkten. En agent anses vara inaktiv om den är online och inte kör ett pipelinejobb. Azure Pipelines utför en utskalningsåtgärd om något av följande villkor uppfylls:

  • Antalet inaktiva agenter understiger det antal standby-agenter som du anger
  • Det finns inga inaktiva agenter för tjänstpipelinejobb som väntar i kön

Om något av dessa villkor uppfylls ökar Antalet virtuella datorer i Azure Pipelines. Utskalning görs i steg om en viss procentandel av den maximala poolstorleken. Tillåt 20 minuter för datorer som ska skapas för varje steg.

Azure Pipelines skalas i agenterna när antalet inaktiva agenter överskrider antalet väntelägen i mer än 30 minuter (kan konfigureras med fördröjning i minuter innan överflödiga inaktiva agenter tas bort).

Om du vill lägga allt detta i ett exempel bör du överväga en skalningsuppsättningsagentpool som har konfigurerats med två standby-agenter och fyra maximala agenter. Låt oss säga att du vill ta bort den virtuella datorn efter varje användning. Låt oss också anta att det inte finns några virtuella datorer att börja med i skalningsuppsättningen.

  • Eftersom antalet inaktiva agenter är 0, och eftersom antalet inaktiva agenter är lägre än antalet väntelägen på 2, skalar Azure Pipelines ut och lägger till två virtuella datorer i skalningsuppsättningen. När dessa agenter är online kommer det att finnas två inaktiva agenter.

  • Låt oss säga att ett pipelinejobb anländer och allokeras till en av agenterna.

  • För närvarande är antalet inaktiva agenter 1 och det är mindre än antalet väntelägen på 2. Azure Pipelines skalar därför ut och lägger till ytterligare två virtuella datorer (den inkrementsstorlek som används i det här exemplet). För närvarande har poolen tre inaktiva agenter och en upptagen agent.

  • Låt oss säga att jobbet på den första agenten slutförs. Azure Pipelines tar agenten offline för att återskapa datorn. Efter några minuter kommer den tillbaka med en ny bild. Just nu har vi fyra inaktiva agenter.

  • Om inga andra jobb anländer i 30 minuter (kan konfigureras med fördröjning i minuter innan överflödiga inaktiva agenter tas bort) avgör Azure Pipelines att det finns fler inaktiva agenter än vad som är nödvändigt. Därför skalas den i poolen till två agenter.

Under hela den här åtgärden är målet för Azure Pipelines att nå önskat antal inaktiva agenter i vänteläge. Pooler skalar ut och in långsamt. Under en dag skalas poolen ut när begäranden placeras i kö på morgonen och skalas in när belastningen avtar på kvällen. Du kan observera fler inaktiva agenter än du önskar vid olika tidpunkter, vilket förväntas när Azure Pipelines gradvis konvergerar till de begränsningar som du anger.

Kommentar

Det kan ta en timme eller mer för Azure Pipelines att skala ut eller skala i de virtuella datorerna. Azure Pipelines skalas ut i steg, övervakar åtgärder för fel och reagerar genom att ta bort oanvändbara datorer och genom att skapa nya under tiden. Den här korrigerande åtgärden kan ta över en timme.

För att uppnå maximal stabilitet utförs skalningsuppsättningsåtgärder sekventiellt. Om poolen till exempel behöver skalas ut och det även finns datorer som inte är felfria att ta bort, skalar Azure Pipelines först ut poolen. När poolen har skalats ut för att nå önskat antal inaktiva agenter i vänteläge tas datorerna som inte är felfria bort, beroende på inställningen Spara en felaktig agent för undersökning . Mer information finns i Ej felfria agenter.

På grund av samplingsstorleken på 5 minuter är det möjligt att alla agenter kan köra pipelines under en kort tidsperiod och att ingen utskalning sker.

Anpassa konfigurationen av pipelineagenten

Du kan anpassa konfigurationen av Azure Pipelines Agent genom att definiera miljövariabler i din anpassade operativsystemavbildning för din skalningsuppsättning. Till exempel är arbetskatalogen för skalningsuppsättningsagenten som standard C:\a för Windows och /agent/_work för Linux. Om du vill ändra arbetskatalogen anger du en miljövariabel med namnet VSTS_AGENT_INPUT_WORK med önskad arbetskatalog. Mer information finns i dokumentationen för pipelinesagentens obevakade konfiguration . Vissa exempel inkluderar:

  • VSTS_AGENT_INPUT_WORK
  • VSTS_AGENT_INPUT_PROXYURL
  • VSTS_AGENT_INPUT_PROXYUSERNAME
  • VSTS_AGENT_INPUT_PROXYPASSWORD

Viktigt!

Du måste vara försiktig när du anpassar Pipelines-agenten. Vissa inställningar kommer att stå i konflikt med andra obligatoriska inställningar, vilket gör att agenten inte registreras och att den virtuella datorn tas bort. De här inställningarna bör inte anges eller ändras:

  • VSTS_AGENT_INPUT_URL
  • VSTS_AGENT_INPUT_AUTH
  • VSTS_AGENT_INPUT_TOKEN
  • VSTS_AGENT_INPUT_USERNAME
  • VSTS_AGENT_INPUT_PASSWORD
  • VSTS_AGENT_INPUT_POOL
  • VSTS_AGENT_INPUT_AGENT
  • VSTS_AGENT_INPUT_RUNASSERVICE
  • ... och allt som rör distributionsgrupper.

Anpassa start av virtuell dator via tillägget för anpassat skript

Användare kanske vill köra startskript på sina skalningsuppsättningsagentdatorer innan dessa datorer börjar köra pipelinejobb. Några vanliga användningsfall för startskript är att installera programvara, värma cacheminnen eller hämta lagringsplatser. Du kan köra startskript genom att installera tillägget för anpassat skript för Windows eller tillägget för anpassat skript för Linux.

Det här tillägget körs på varje virtuell dator i skalningsuppsättningen omedelbart efter att det har skapats eller återskapats. Det anpassade skripttillägget körs innan Azure Pipelines-agenttillägget körs.

Här är ett exempel på hur du skapar ett anpassat skripttillägg för Linux.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScript \
--version 2.0 \
--publisher Microsoft.Azure.Extensions \
--settings '{ \"fileUris\":[\"https://<myGitHubRepoUrl>/myScript.sh\"], \"commandToExecute\": \"bash ./myScript.sh /myArgs \" }'

Här är ett exempel på hur du skapar ett anpassat skripttillägg för Windows.

az vmss extension set \
--vmss-name <scaleset name> \
--resource-group <resource group> \
--name CustomScriptExtension \
--version 1.9 \
--publisher Microsoft.Compute \
--settings '{ \"FileUris\":[\"https://<myGitHubRepoUrl>/myscript.ps1\"], \"commandToExecute\": \"Powershell.exe -ExecutionPolicy Unrestricted -File myscript.ps1 -myargs 0 \" }'

Viktigt!

Skripten som körs i tillägget för anpassat skript måste returneras med slutkod 0 för att den virtuella datorn ska kunna slutföra processen för att skapa den virtuella datorn. Om det anpassade skripttillägget utlöser ett undantag eller returnerar en slutkod som inte är noll körs inte Azure Pipeline-tillägget och den virtuella datorn registreras inte med Azure DevOps-agentpoolen.

Det kan hända att tillägget körs innan alla vm-resurser etableras, i vilket fall du ser ett fel som liknar "det gick inte att installera grundläggande förutsättningar". Du kan åtgärda detta genom att lägga till ett sleep kommando i början av skriptet, sleep 30till exempel .

Livscykel för en skalningsuppsättningsagent

Här är flödet av åtgärder för en Azure Pipelines Vm-skalningsuppsättningsagent

  1. Storleksjobbet för Azure DevOps Scale Set Agent Pool avgör att poolen har för få inaktiva agenter och måste skalas ut. Azure Pipelines anropar Azure Scale Sets för att öka kapaciteten för skalningsuppsättningen.

  2. Azure Scale Set börjar skapa de nya virtuella datorerna. När de virtuella datorerna körs kör Azure Scale Sets sekventiellt alla installerade VM-tillägg.

  3. Om tillägget för anpassat skript är installerat körs det före Azure Pipelines Agent-tillägget. Om det anpassade skripttillägget returnerar en slutkod som inte är noll avbryts processen för att skapa den virtuella datorn och tas bort.

  4. Azure Pipelines Agent-tillägget körs. Det här tillägget laddar ned den senaste versionen av Azure Pipelines-agenten tillsammans med den senaste versionen av konfigurationsskriptet. Konfigurationsskripten finns på URL:er med följande format:

    • Linux: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Linux/<script_version>/enableagent.sh, till exempel version 15
    • Windows: https://vstsagenttools.blob.core.windows.net/tools/ElasticPools/Windows/<script_version>/enableagent.ps1, till exempel version 17
  5. Konfigurationsskriptet skapar en lokal användare med namnet AzDevOps om operativsystemet är Windows Server eller Linux. För Windows 10-klientoperativsystemet körs agenten som LocalSystem. Skriptet packar sedan upp, installerar och konfigurerar Azure Pipelines-agenten. Som en del av konfigurationen registreras agenten med Azure DevOps-agentpoolen och visas i listan med agentpooler i offlinetillståndet.

  6. I de flesta scenarier startar konfigurationsskriptet sedan omedelbart agenten för att köras som den lokala användaren AzDevOps. Agenten går online och är redo att köra pipelinejobb.

    Om poolen har konfigurerats för interaktivt användargränssnitt startas den virtuella datorn om när agenten har konfigurerats. Efter omstarten loggar den lokala användaren in automatiskt och pipelines-agenten startar. Agenten går sedan online och är redo att köra pipelinejobb.

Skapa en skalningsuppsättning med anpassad avbildning, programvara eller diskstorlek

Om du bara vill skapa en skalningsuppsättning med standarddisken på 128 GB med en offentligt tillgänglig Azure-avbildning hoppar du direkt till steg 10 och använder det offentliga avbildningsnamnet (UbuntuLTS, Win2019DataCenter osv.) för att skapa skalningsuppsättningen. Följ annars de här stegen för att anpassa den virtuella datorns avbildning.

  1. Skapa en virtuell dator med önskad OS-avbildning och expandera os-diskstorleken från 128 GB till <myDiskSizeGb>.

    • Om du börjar med en tillgänglig Azure Image, till exempel <myBaseImage> = (Win2019DataCenter, UbuntuLTS):

      az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myBaseImage> --os-disk-size-gb <myDiskSize>  --admin-username myUserName --admin-password myPassword
      
    • Om du börjar med en generaliserad virtuell hårddisk:

      1. Skapa först den virtuella datorn med en ohanterad disk med önskad storlek och konvertera sedan till en hanterad disk:

        az vm create --resource-group <myResourceGroup> --name <MyVM> --image <myVhdUrl> --os-type windows --os-disk-size-gb <myDiskSizeGb> --use-unmanaged-disk --admin-username <myUserName> --admin-password <myPassword> --storage-account <myVhdStorageAccount>
        
      2. Stäng av den virtuella datorn

        az vm stop --resource-group <myResourceGroup> --name <MyVM>
        
      3. Frigör den virtuella datorn

        az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
        
      4. Konvertera till en hanterad disk

        az vm convert --resource-group <myResourceGroup> --name <MyVM>
        
      5. Starta om den virtuella datorn

        az vm start --resource-group <myResourceGroup> --name <MyVM>
        
  2. Fjärrskrivbord (eller SSH) till den virtuella datorns offentliga IP-adress för att anpassa avbildningen. Du kan behöva öppna portarna i brandväggen för att avblockera RDP-portarna (3389) eller SSH (22).

    1. Windows – Om <MyDiskSizeGb> är större än 128 GB utökar du os-diskstorleken så att den fyller den diskstorlek som du angav av <MyDiskSizeGb>.

      Öppna DiskPart-verktyget som administratör och kör följande DiskPart-kommandon:

      1. list volume (för att se volymerna)
      2. select volume 2 (beror på vilken volym som är OS-enheten)
      3. extend size 72000 (för att utöka enheten med 72 GB, från 128 GB till 200 GB)
  3. Installera eventuell ytterligare programvara på den virtuella datorn.

  4. Om du vill anpassa behörigheterna för pipelineagentanvändaren kan du skapa en användare med namnet AzDevOpsoch ge användaren de behörigheter du behöver. Den här användaren skapas av startskriptet för skalningsuppsättningsagenten om den inte redan finns.

  5. Starta om den virtuella datorn när du är klar med anpassningar

  6. Generalisera den virtuella datorn.

    • Windows – Från ett administratörskonsolfönster:
      C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /shutdown
      
    • Linux:
      sudo waagent -deprovision+user -force
      

    Viktigt!

    Vänta tills den virtuella datorn har slutfört generaliseringen och avstängningen. Fortsätt inte förrän den virtuella datorn har stoppats. Tillåt 60 minuter.

  7. Frigör den virtuella datorn

    az vm deallocate --resource-group <myResourceGroup> --name <MyVM>
    
  8. Markera den virtuella datorn som Generaliserad

    az vm generalize --resource-group <myResourceGroup> --name <MyVM>
    
  9. Skapa en VM-avbildning baserat på den generaliserade avbildningen. När du utför de här stegen för att uppdatera en befintlig skalningsuppsättningsbild bör du anteckna url:en för bild-ID i utdata.

    az image create  --resource-group <myResourceGroup> --name <MyImage> --source <MyVM>
    
  10. Skapa skalningsuppsättningen baserat på den anpassade VM-avbildningen

    az vmss create --resource-group <myResourceGroup> --name <myScaleSet> --image <MyImage> --admin-username <myUsername> --admin-password <myPassword> --instance-count 2 --disable-overprovision --upgrade-policy-mode manual --load-balancer '""'
    
  11. Kontrollera att båda de virtuella datorer som skapats i skalningsuppsättningen är online, har olika namn och når tillståndet Lyckades

Nu är du redo att skapa en agentpool med den här skalningsuppsättningen.

Uppdatera en befintlig skalningsuppsättning med en ny anpassad avbildning

Om du vill uppdatera avbildningen på en befintlig skalningsuppsättning följer du stegen i föregående avsnitt Skapa en skalningsuppsättning med anpassad avbildning, programvara eller diskstorlek genom steget för att generera den anpassade OS-avbildningen az image create . Anteckna ID-egenskaps-URL:en som är utdata från az image create kommandot. Uppdatera sedan skalningsuppsättningen med den nya bilden enligt följande exempel. När skalningsuppsättningsbilden har uppdaterats skapas alla framtida virtuella datorer i skalningsuppsättningen med den nya avbildningen.

az vmss update --resource-group <myResourceGroup> --name <myScaleSet> --set virtualMachineProfile.storageProfile.imageReference.id=<id url>

Operativsystem som stöds

Skalningsuppsättningsagenter stöder för närvarande Ubuntu Linux, Windows Server/DataCenter 2016/2019 och Windows 10-klienten.

Kända problem

  • Debian- eller RedHat Linux-distributioner stöds inte. Endast Ubuntu är det.
  • Windows 10-klienten stöder inte körning av pipelineagenten som en lokal användare och därför kan agenten inte interagera med användargränssnittet. Agenten körs som lokal tjänst i stället.

Felsökningsproblem

Gå till dina Azure DevOps-projektinställningar, välj Agentpooler under Pipelines och välj din agentpool. Välj fliken Med etiketten Diagnostik.

Fliken Diagnostik visar alla åtgärder som körs av Azure DevOps för att skapa, ta bort eller återskapa virtuella datorer i azure-skalningsuppsättningen. Diagnostik loggar även eventuella fel som påträffas vid försök att utföra dessa åtgärder. Granska felen för att se till att skalningsuppsättningen har tillräckligt med resurser för att skala ut. Om din Azure-prenumeration har nått resursgränsen i virtuella datorer, CPU-kärnor, diskar eller IP-adresser visas dessa fel här.

Ej felfria agenter

När agenter eller virtuella datorer inte startar, inte ansluter till Azure DevOps eller oväntat går offline loggar Azure DevOps felen på fliken Diagnostik för agentpoolen och försöker ta bort den associerade virtuella datorn. Nätverkskonfiguration, avbildningsanpassning och väntande omstarter kan orsaka dessa problem. Att ansluta till den virtuella datorn för att felsöka och samla in loggar kan hjälpa dig med undersökningen.

Om du vill att Azure DevOps ska spara en virtuell dator med feltillstånd för undersökning och inte automatiskt ta bort den när den identifierar feltillståndet går du till dina Azure DevOps Project-inställningar, väljer Agentpooler under Pipelines och väljer din agentpool. Välj Inställningar, välj alternativet Spara en felaktig agent för undersökning och välj Spara.

Spara inställningen för feltillståndsagent.

Nu när en agent med feltillstånd identifieras i skalningsuppsättningen sparar Azure DevOps agenten och den associerade virtuella datorn. Den sparade agenten visas på fliken Diagnostik i användargränssnittet för agentpoolen. Gå till dina Azure DevOps Project-inställningar, välj Agentpooler under Pipelines, välj din agentpool, välj Diagnostik och anteckna agentnamnet.

Kortet Sparade agenter.

Leta reda på den associerade virtuella datorn i skalningsuppsättningen för virtuella Azure-datorer via Azure Portal i listan Instanser.

Azure Portal vm-skalningsuppsättningsinstanser.

Välj instansen, välj Anslut och utför undersökningen.

Anslut till en virtuell datorinstans.

Om du vill ta bort den sparade agenten när du är klar med din undersökning går du till dina Azure DevOps Project-inställningar, väljer Agentpooler under Pipelines och väljer din agentpool. Välj fliken Diagnostik. Leta upp agenten på agenterna som sparats för undersökningskortet och välj Ta bort. Detta tar bort agenten från poolen och tar bort den associerade virtuella datorn.

Knappen Ta bort kort för sparade agenter.

Vanliga frågor och svar

Vilka är några vanliga problem och deras lösningar?

Du ser fler inaktiva agenter än vad som önskas vid olika tidpunkter

Mer information om varför detta händer finns i Så hanterar Azure Pipelines skalningsuppsättningen. Under skalningsåtgärden är målet för Azure Pipelines att nå önskat antal inaktiva agenter i vänteläge. Pooler skalar ut och in långsamt. Under en dag skalas poolen ut när begäranden placeras i kö på morgonen och skalas in när belastningen avtar på kvällen. Det här beteendet är förväntat eftersom Azure Pipelines gradvis konvergerar till de begränsningar som du anger.

Skalningsuppsättningar för virtuella datorer skalas inte upp under det förväntade femminutersintervallet

Skalningsjobbet körs var femte minut, men om bara en åtgärd bearbetas kan du se att uppskalningen inte sker inom fem minuter. Detta är för närvarande avsiktligt.

Azure DevOps VM Scale Set startar ofta inte pipelinen

Det första stället att titta på när det uppstår problem med skalningsuppsättningsagenter är fliken Diagnostik i agentpoolen.

Överväg också att spara den virtuella datorn med feltillstånd i felsökningssyfte. Mer information finns i Agenter med feltillstånd.

Sparade agenter finns där om du inte tar bort dem. Om agenten inte är online på 10 minuter markeras den som felaktig och sparas om möjligt. Endast en virtuell dator hålls i ett sparat tillstånd. Om agenten oväntat kopplas från (på grund av en omstart av den virtuella datorn eller något som händer med avbildningen) sparas den inte för undersökning.

Endast virtuella datorer för vilka agenter inte kan starta sparas. Om en virtuell dator har ett misslyckat tillstånd när den skapas sparas den inte. I det här fallet är meddelandet på fliken Diagnostik "ta bort en dator med feltillstånd" i stället för "det gick inte att starta".

Du kontrollerar alternativet att automatiskt ta bort virtuella datorer efter varje användning för agentpoolen, men du ser att de virtuella datorerna inte avbildas igen som de ska och bara hämtar nya jobb när de placeras i kö

Alternativet att avregistrera den virtuella datorn när den har skapats fungerar endast för Windows Server och Linux-avbildningar som stöds. Det stöds inte för Windows-klientavbildningar.

Vm-skalningsuppsättningar visar agenten som offline om den virtuella datorn startas om

Att visa agenterna som offline om den virtuella datorn startas om är det förväntade beteendet. Agenttjänsten körs endast i systemkontexten. Men om datorn av någon anledning startas om anses den vara en virtuell dator med feltillstånd och tas bort. Mer information finns i Agenter med feltillstånd.

När agenter eller virtuella datorer inte startar, inte kan ansluta till Azure DevOps eller oväntat kopplas från loggar Azure DevOps felen på fliken Diagnostik för agentpoolen och försöker ta bort den associerade virtuella datorn. Nätverkskonfiguration, avbildningsanpassning och väntande omstarter kan orsaka dessa problem. Du undviker problemet genom att inaktivera programuppdateringen på avbildningen. Du kan också ansluta till den virtuella datorn för att felsöka och samla in loggar för att undersöka problemet.

Du kan se flera taggar som _AzureDevOpsElasticPoolTimeStamp för VM-skalningsuppsättningar i kostnadshantering

När poolen skapas läggs en tagg till i skalningsuppsättningen för att markera att skalningsuppsättningen används (för att undvika att två pooler använder samma skalningsuppsättning) och en annan tagg läggs till för tidsstämpeln som uppdateras varje gång konfigurationsjobbet körs (varannan timme).

Du kan inte skapa en ny skalningsuppsättningsagentpool och få ett felmeddelande om att en pool med samma namn redan finns

Du kan få ett felmeddelande som This virtual machine scale set is already in use by pool <pool name> eftersom taggen fortfarande finns på skalningsuppsättningen även efter att den har tagits bort. När en agentpool tas bort försöker du ta bort taggen från skalningsuppsättningen, men det här är ett bästa försök och du ger upp efter tre återförsök. Det kan också finnas ett maximalt mellanrum på två timmar, där en VM-skalningsuppsättning som inte används av någon agentpool inte kan tilldelas till en ny. Lösningen på detta är att vänta tills tidsintervallet har förflutit eller ta bort taggen för skalningsuppsättningen manuellt från Azure-portalen. När du visar skalningsuppsättningen i Azure-portalen väljer du länken Taggar till vänster och tar bort taggen märkt med _AzureDevOpsElasticPool.

Underhållsjobbet Vm Scale Sets körs inte på agenter eller hämtar loggar

Underhållsjobbet körs en gång var 24:e timme. Det är möjligt att virtuella datorer fylls innan den här tiden förflutit. Överväg att öka diskstorleken på den virtuella datorn och lägga till ett skript i pipelinen för att ta bort innehållet.

Om du anger AzDevOps som primär administratör i skriptet för VM-skalningsuppsättningar kan du se problem med agentkonfigurationerna på skalningsuppsättningsinstanser

Om du anger AzDevOps som primär administratör i skriptet för VM-skalningsuppsättning kan du se problem med agentkonfigurationerna på skalningsuppsättningsinstanser (lösenordet för användaren ändras om det redan finns).

Det här problemet beror på att agenttilläggsskript försöker skapa användaren AzDevOps och ändra dess lösenord.

Kommentar

Det är ok att skapa användaren och ge den extra behörigheter, men det bör inte vara den primära administratören, och ingenting ska vara beroende av lösenordet, eftersom lösenordet ändras. Du kan undvika problemet genom att välja en annan användare än AzDevOps som primär administratör när du skapar skalningsuppsättningen.

Installationen av agenttillägget misslyckas på skalningsuppsättningsinstanser på grund av nätverkssäkerhet och brandväggskonfigurationer

Tillägget måste kunna ladda ned build agent-filerna från https://vstsagentpackage.azureedge.net/agent och build agent måste kunna registrera sig med Azure DevOps Services. Se till att den här URL:en och Azure DevOps Services-relaterade IP-adresser och URL:er är öppna på instansen. Information om IP-adresser och URL:er som måste avblockeras i brandväggen finns i Tillåtna IP-adresser och domän-URL:er.

Varför anropar mitt konfigurationsskript för skalningsuppsättningsagenten Add-MpPreference och konfigurerar Windows Defender på agenten?

För att förbättra prestanda och tillförlitlighet anropar konfigurationsskripten Add-MpPreference med en ExclusionPath innehållande C:\ och D:\, som inaktiverar schemalagd Windows Defender- och realtidsgenomsökning efter filer i dessa mappar på agenten. Om du vill ändra standardbeteendet anger du en miljövariabel med namnet ELASTIC_POOLS_SKIP_DEFENDER_EXCLUSION till true.

Jag vill öka min poolstorlek. Vad ska jag ta hänsyn till?

Innan du ökar storleken på din pool kontrollerar du att Azure Virtual Network som konfigurerats för vm-skalningsuppsättningar har ett tillräckligt stort adressutrymme för alla dina nya agenter. Annars kan du få ett fel som liknar Det gick inte att öka kapaciteten. Undernätet azure-devops-agent-pool-fabrikam-fiber med adressprefixet 12.123.45.224/28 har inte tillräckligt med kapacitet för 5 IP-adresser.