Opret og brug Bicep-moduler

Fuldført

Moduler er uafhængige Bicep-filer. De indeholder typisk sæt af ressourcer, der udrulles sammen. Moduler kan bruges fra en hvilken som helst anden Bicep-skabelon.

Ved hjælp af moduler kan du genbruge din Bicep-kode, og du kan gøre dine Bicep-filer mere læsevenlige og forståelige, fordi de hver især fokuserer på et bestemt job. Dine primære skabeloner opretter derefter flere moduler sammen.

Fordelene ved moduler

I dit legetøjsfirma har du klargjort cloudressourcer ved hjælp af mange individuelle Bicep-filer. Med tiden vokser disse skabeloner betydeligt. Til sidst ender du med at have monolitisk kode, der er svært at læse og navigere og endnu sværere at vedligeholde.

Denne fremgangsmåde tvinger dig også til at duplikere dele af din kode, når du vil genbruge den i andre skabeloner. Når du ændrer noget, skal du søge i og opdatere flere filer.

Bicep-moduler hjælper dig med at håndtere disse udfordringer ved at opdele din kode i mindre, mere håndterbare filer, som flere skabeloner kan referere til. Moduler giver dig nogle vigtige fordele.

Genbrugelighed

Når du har oprettet et modul, kan du genbruge det i flere Bicep-filer, selvom filerne er til forskellige projekter eller arbejdsbelastninger. Når du f.eks. opretter én løsning, kan du oprette separate moduler for appkomponenterne, databasen og de netværksrelaterede ressourcer. Når du derefter begynder at arbejde på et andet projekt med lignende netværkskrav, kan du genbruge det relevante modul.

diagram, der viser en skabelon, der refererer til tre moduler: program, database og netværk. Netværksmodulet genbruges derefter i en anden skabelon.

Du kan endda dele moduler i dit team, i din organisation eller med Azure-community'et. Du får mere at vide om deling af Bicep-moduler i et fremtidigt Microsoft Learn-modul.

Indkapsling

Moduler hjælper dig med at holde relaterede ressourcedefinitioner samlet. Når du f.eks. definerer en Azure Functions-app, udruller du typisk appen, en hostingplan for appen og en lagerkonto for appens metadata. Disse tre komponenter defineres separat, men de repræsenterer en logisk gruppering af ressourcer, så det kan give mening at definere dem som et modul.

På den måde behøver din primære skabelon ikke at være opmærksom på detaljerne om, hvordan en funktionsapp udrulles. Det er modulets ansvar.

Komposabilitet

Når du har oprettet et sæt moduler, kan du oprette dem sammen. Du kan f.eks. oprette et modul, der udruller et virtuelt netværk, og et andet modul, der installerer en virtuel maskine. Du definerer parametre og output for hvert modul, så du kan tage de vigtige oplysninger fra det ene og sende dem til det andet.

diagram, der viser en skabelon, der refererer til to moduler og overfører outputtet fra ét til parameteren for et andet.

Drikkepenge

Det er nyttigt at tænke på Bicep-moduler som komponenter, som du kan kombinere på forskellige måder for at understøtte dine udrulninger.

Funktionalitet

Nogle gange skal du muligvis bruge moduler til at få adgang til visse funktioner. Du kan f.eks. bruge moduler og løkker sammen for at udrulle flere sæt ressourcer. Du kan også bruge moduler til at definere ressourcer på forskellige områder i en enkelt installation.

Opret et modul

Et modul er en normal Bicep-fil. Du skal oprette den på samme måde, som du gør med alle andre Bicep-filer.

Generelt er det ikke en god idé at oprette et modul for hver ressource, du udruller. Et godt Bicep-modul definerer typisk flere relaterede ressourcer. Men hvis du har en kompleks ressource med en masse konfiguration, kan det give mening at oprette et enkelt modul for at indkapsle kompleksiteten. Denne fremgangsmåde holder dine primære skabeloner enkle og ryddelige.

Opdel en eksisterende Bicep-skabelon i moduler

Du kan oprette en stor Bicep-skabelon og derefter beslutte, at den skal opdeles i moduler. Nogle gange er det indlysende, hvordan du skal opdele en stor Bicep-fil. Du har muligvis et sæt ressourcer, der klart hører sammen i et modul. Andre gange er det ikke ligetil at bestemme de ressourcer, der skal grupperes i et modul.

Bicep-visualiseringen kan hjælpe dig med at sætte hele din Bicep-fil i perspektiv. Visualiseringen er inkluderet i Bicep-udvidelsen til Visual Studio Code.

Hvis du vil have vist visualiseringen, skal du åbne Visual Studio Code Explorer, vælge og holde (eller højreklikke) på Bicep-filen og derefter vælge Åbn Bicep Visualizer. Visualiseringen viser en grafisk repræsentation af ressourcerne i din Bicep-fil. Den indeholder linjer mellem ressourcer for at vise de afhængigheder, som Bicep registrerer.

Du kan bruge visualiseringen til at hjælpe dig med at opdele dine filer. Overvej, om visualiseringen illustrerer klynger af ressourcer. Det kan give mening at flytte disse klynger til et modul sammen.

Overvej f.eks. følgende visualisering for en Bicep-fil. Der er defineret to forskellige sæt ressourcer. Det kan give mening at gruppere dem i separate database og netværks- moduler.

Skærmbillede af Bicep-visualiseringen.

Nest-moduler

Moduler kan omfatte andre moduler. Ved hjælp af denne indlejringsteknik kan du oprette nogle moduler, der udruller små sæt ressourcer, og derefter oprette disse i større moduler, der definerer komplekse topologier for ressourcer. En skabelon kombinerer disse dele i et udrulleligt artefakt.

Drikkepenge

Selvom det er muligt at indlejre flere lag af moduler, kan det blive komplekst. Hvis du får en fejl, eller noget andet går galt, er det sværere at finde ud af, hvad du skal løse, når du har mange lag af indlejring.

I forbindelse med komplekse udrulninger giver det nogle gange mening at bruge udrulningspipelines til at udrulle flere skabeloner i stedet for at oprette en enkelt skabelon, der gør alt med indlejring. Du får mere at vide om udrulningspipelines i et fremtidigt Microsoft Learn-modul.

Vælg gode filnavne

Sørg for at bruge et beskrivende filnavn til hvert modul. Filnavnet bliver effektivt id'et for modulet. Det er vigtigt, at dine kolleger kan forstå modulets formål blot ved at se på filnavnet.

Brug modulet i en Bicep-skabelon

Du kan bruge et modul i en Bicep-skabelon ved hjælp af nøgleordet module på følgende måde:

module appModule 'modules/app.bicep' = {
  name: 'myApp'
  params: {
    location: location
    appServiceAppName: appServiceAppName
    environmentType: environmentType
  }
}

En moduldefinition indeholder følgende komponenter:

  • Nøgleordet module.
  • Et symbolsk navn, f.eks. appModule. Dette navn bruges i denne Bicep-fil, når du vil referere til modulet. Det symbolske navn vises aldrig i Azure.
  • Modulstien, f.eks. modules/app.bicep. Dette er typisk stien til en Bicep-fil på dit lokale filsystem. I et fremtidigt Microsoft Learn-modul får du mere at vide om, hvordan du kan dele moduler ved hjælp af registre og skabelonspecifikationer, som har deres egne modulstiformater.

    Drikkepenge

    Du kan også bruge en JSON Azure Resource Manager-skabelon (ARM-skabelon) som et modul. Denne mulighed kan være nyttig, hvis du har et sæt skabeloner, som du endnu ikke har overført til Bicep.

  • Egenskaben name, som angiver navnet på installationen. Du får mere at vide om udrulninger i næste afsnit.
  • Egenskaben params, hvor du kan angive værdier for de parametre, som modulet forventer. Du får mere at vide om modulparametre i det næste undermodul.

Sådan fungerer moduler

Det er ikke nødvendigt at forstå, hvordan moduler fungerer, for at bruge dem, men det kan hjælpe dig med at undersøge problemer med dine installationer eller hjælpe med at forklare uventet funktionsmåde.

Installationer

I Azure er en udrulning en særlig ressource, der repræsenterer en udrulningshandling. Udrulninger er Azure-ressourcer, der har ressourcetypen Microsoft.Resources/deployments. Når du sender en Bicep-udrulning, opretter eller opdaterer du en installationsressource. Når du opretter ressourcer på Azure Portal, opretter portalen på samme måde en installationsressource på dine vegne.

Det er dog ikke alle ændringer af Azure-ressourcer, der opretter eller bruger udrulninger. Når du f.eks. bruger Azure Portal til at redigere en eksisterende ressource, opretter den normalt ikke en udrulning for at foretage ændringen. Når du bruger tredjepartsværktøjer som Terraform til at udrulle eller konfigurere dine ressourcer, opretter de muligvis ikke udrulninger.

Når du installerer en Bicep-fil ved hjælp af Azure CLI eller Azure PowerShell, kan du eventuelt angive navnet på installationen. Hvis du ikke angiver et navn, opretter Azure CLI eller Azure PowerShell automatisk et installationsnavn for dig ud fra skabelonens filnavn. Hvis du f.eks. installerer en fil med navnet main.bicep, er standardinstallationsnavnet main.

Når du bruger moduler, opretter Bicep en separat udrulning for hvert modul. Den name egenskab, du angiver for modulet, bliver navnet på installationen. Når du installerer en Bicep-fil, der indeholder et modul, oprettes der flere udrulningsressourcer: én for den overordnede skabelon og én for hvert modul.

Lad os f.eks. antage, at du opretter en Bicep-fil med navnet main.bicep. Det definerer et modul med navnet myApp. Når du installerer filen main.bicep, oprettes der to installationer. Den første hedder main, og den opretter en anden installation med navnet myApp, der indeholder dine programressourcer.

diagram, der viser to Bicep-filer, som hver især har et separat installationsnavn.

Du kan få vist og få vist oplysninger om udrulningsressourcer for at overvåge status for dine Bicep-installationer eller for at få vist historikken for udrulninger. Men når du genbruger det samme navn til en installation, overskriver Azure den seneste installation med det samme navn. Hvis du har brug for at vedligeholde installationshistorikken, skal du sikre dig, at du bruger et entydigt navn til hver udrulning. Du kan inkludere datoen og klokkeslættet for installationen i navnet for at gøre den entydig.

Genererede JSON ARM-skabeloner

Når du installerer en Bicep-fil, konverterer Bicep den til en JSON ARM-skabelon. Denne konvertering kaldes også -transpilering. De moduler, som skabelonen bruger, er integreret i JSON-filen. Uanset hvor mange moduler du inkluderer i skabelonen, oprettes der kun en enkelt JSON-fil.

I eksemplet i forrige afsnit genererer Bicep en enkelt JSON-fil, selvom der oprindeligt var to Bicep-filer.

diagram, der viser to Bicep-filer, som overføres til en enkelt JSON-fil.