Vad är Azure Resource Manager?
Du tillbringade lite tid med ditt team för att lära dig fördelarna med infrastruktur som kod och de olika metoder som är tillgängliga. Ditt företag växer snabbt och ditt team vet att det kommer att distribuera ett stort antal resurser till Azure. Som team bestämde du dig för att deklarativ infrastruktur som kod är rätt metod för resursetablering. Teamet vill inte underhålla skript som visar varje distributionssteg. Innan du börjar skapa din första mall måste du förstå hur Azure Resource Manager fungerar. Genom att undersöka vilka typer av mallar som är tillgängliga att använda med Azure kan du fastställa nästa steg i din strategi för infrastruktur som kod.
I den här lektionen lär du dig mer om Resource Manager och de två typerna av Resource Manager-mallar.
Azure Resource Manager-begrepp
Azure Resource Manager är den tjänst som används för att distribuera och hantera resurser i Azure. Du kan använda Resource Manager för att skapa, uppdatera och ta bort resurser i din Azure-prenumeration. Du kan interagera med Resource Manager med hjälp av många verktyg, inklusive Azure Portal. Resource Manager innehåller också en serie andra funktioner, till exempel åtkomstkontroll, granskning och taggning, som hjälper dig att hantera dina resurser efter distributionen.
Terminologi
När du börjar din molnresa med Resource Manager är det viktigt att förstå vissa termer och begrepp:
Resurs: Ett hanterbart objekt som är tillgängligt på Azure-plattformen. Virtuella nätverk, virtuella datorer, lagringskonton, webbappar och databaser är exempel på resurser.
Resursgrupp: En logisk container som innehåller relaterade resurser för en Azure-lösning. Resursgruppen innehåller resurser som du vill hantera som en grupp. De flesta Azure-resurser finns i en resursgrupp. Du bestämmer vilka resurser som ska ingå i en resursgrupp baserat på vad som passar bäst för din lösning.
Kommentar
Ett litet antal resurser finns inte i resursgrupper. Dessa resurstyper är för specifika ändamål som att hantera åtkomstkontroll och framtvinga principer. Du lär dig mer om dessa resurser i en senare modul.
Prenumeration: En logisk container och faktureringsgräns för dina resurser och resursgrupper. Varje Azure-resurs och resursgrupp är endast associerad med en prenumeration.
Hanteringsgrupp: En logisk container som du använder för att hantera mer än en prenumeration. Du kan definiera en hierarki för hanteringsgrupper, prenumerationer, resursgrupper och resurser för att effektivt hantera åtkomst, principer och efterlevnad genom arv.
Azure Resource Manager-mall (ARM-mall): En mallfil som definierar en eller flera resurser som ska distribueras till en resursgrupp, prenumeration, hanteringsgrupp eller klientorganisation. Du kan använda mallen för att distribuera resurserna på ett konsekvent och repeterbart sätt. Det finns två typer av ARM-mallfiler: JSON och Bicep. Den här modulen fokuserar på Bicep.
Förmåner
Resource Manager ger många fördelar och funktioner som rör etablering av infrastruktur som kod:
- Du kan distribuera, hantera och övervaka resurserna i din lösning som en grupp i stället för individuellt.
- Du kan distribuera om lösningen under utvecklingslivscykeln och ha förtroende för att dina resurser distribueras i ett konsekvent tillstånd.
- Du kan hantera infrastrukturen via deklarativa mallar i stället för med hjälp av skript.
- Du kan ange resursberoenden för att säkerställa att resurserna distribueras i rätt ordning.
Åtgärder: Kontrollplan och dataplan
Du kan köra två typer av åtgärder i Azure: kontrollplansåtgärder och dataplansåtgärder. Använd kontrollplanet för att hantera resurserna i din prenumeration. Använd dataplanet för att komma åt funktioner som exponeras av en resurs.
Du kan till exempel använda en kontrollplansåtgärd för att skapa en virtuell dator, men du använder en dataplansåtgärd för att ansluta till den virtuella datorn med hjälp av RDP (Remote Desktop Protocol).
Kontrollplan
När du skickar en begäran från något av Azure-verktygen, API:erna eller SDK:erna (Software Development Kits) tar Resource Manager emot, autentiserar och auktoriserar begäran. Sedan skickar den begäran till Azure-resursprovidern, som vidtar den begärda åtgärden. Eftersom alla begäranden hanteras via samma API ser du konsekventa resultat och funktioner i alla olika verktyg som är tillgängliga i Azure.
Följande bild visar den roll som Resource Manager spelar i hanteringen av Azure-begäranden:
Alla begäranden om kontrollplansåtgärd skickas till en Resource Manager-URL. Till exempel är åtgärden skapa eller uppdatera för virtuella datorer en kontrollplansåtgärd. Här är begärande-URL:en för den här åtgärden:
PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}?api-version=2022-08-01
Kontrollplanet förstår vilka resurser som behöver skapas och vilka resurser som redan finns. Resource Manager förstår skillnaden mellan dessa begäranden och skapar inte identiska resurser eller tar bort befintliga resurser, även om det finns sätt att åsidosätta det här beteendet.
Dataplanet
När en dataplansåtgärd startar skickas begäranden till en specifik slutpunkt i din Azure-prenumeration. Åtgärden Detect Language i Azure AI-tjänster är till exempel en dataplansåtgärd eftersom begärande-URL:en är:
POST https://eastus.api.cognitive.microsoft.com/text/analytics/v2.0/languages
Resource Manager-funktioner som åtkomstkontroll och lås gäller inte alltid för dataplansåtgärder. En användare kanske till exempel inte har behörighet att hantera en virtuell dator med hjälp av kontrollplanet, men användaren kan logga in på operativsystemet.
Vad är ARM-mallar?
Azure Resource Manager-mallar är filer som definierar infrastrukturen och konfigurationen för distributionen. När du skriver en ARM-mall använder du en deklarativ metod för resursetablering. Dessa mallar beskriver varje resurs i distributionen, men de beskriver inte hur du distribuerar resurserna. När du skickar en mall till Resource Manager för distribution kan kontrollplanet distribuera de definierade resurserna på ett organiserat och konsekvent sätt. I föregående lektion lärde du dig om skillnaderna mellan imperativ kod och deklarativ kod.
Varför ska du använda ARM-mallar?
Det finns många fördelar med att använda ARM-mallar, antingen JSON eller Bicep, för din resursetablering.
Repeterbara resultat: ARM-mallar är idempotenter, vilket innebär att du upprepade gånger kan distribuera samma mall och få samma resultat. Mallen duplicerar inte resurser.
Orkestrering: När en malldistribution skickas till Resource Manager distribueras resurserna i mallen parallellt. Den här processen gör att distributionerna kan slutföras snabbare. Resource Manager samordnar dessa distributioner i rätt ordning om en resurs är beroende av en annan.
Förhandsversion: Med konsekvensverktyget, som är tillgängligt i Azure PowerShell och Azure CLI, kan du förhandsgranska ändringar i din miljö före malldistributionen. Det här verktyget beskriver alla skapanden, ändringar och borttagningar som görs av mallen.
Testning och validering: Du kan använda verktyg som Bicep-lintern för att kontrollera kvaliteten på dina mallar före distributionen. ARM-mallar som skickas till Resource Manager verifieras före distributionsprocessen. Den här valideringen varnar dig om eventuella fel i mallen före resursetablering.
Modularitet: Du kan dela upp dina mallar i mindre komponenter och länka ihop dem vid distributionen.
CI/CD-integrering: Arm-mallarna kan integreras i flera CI/CD-verktyg, till exempel Azure DevOps och GitHub Actions. Du kan använda dessa verktyg för att versionsmallar via källkontroll och versionspipelines.
Utökningsbarhet: Med distributionsskript kan du köra Bash- eller PowerShell-skript inifrån ARM-mallarna. Dessa skript utför uppgifter, till exempel dataplansåtgärder, vid distribution. Genom utökningsbarhet kan du använda en enda ARM-mall för att distribuera en fullständig lösning.
JSON- och Bicep-mallar
Två typer av ARM-mallar är tillgängliga för användning idag: JSON-mallar och Bicep-mallar. JavaScript Object Notation (JSON) är ett filformat med öppen standard som flera språk kan använda. Bicep är ett nytt domänspecifikt språk som nyligen utvecklades för redigering av ARM-mallar med hjälp av en enklare syntax. Du kan använda antingen mallformat för ARM-mallar och resursdistributioner.