Hvad er infrastruktur som kode?

Fuldført

Du bliver bedt om at evaluere, om infrastruktur som kode kan være en værdifuld tilgang til klargøring af ressourcer i din virksomhed. Du gennemgår de tilgængelige indstillinger for installation, herunder:

  • Azure Portal
  • Azure CLI
  • Azure PowerShell
  • Azure Resource Manager-skabeloner (JSON og Bicep)

Du leder efter en mulighed, der kan gentages, og du skal beslutte, hvilken teknologi der skal bruges til at udrulle din Azure-infrastruktur.

I dette undermodul lærer du, hvordan og hvorfor infrastruktur som kode kan hjælpe dig med at udrulle din Azure-infrastruktur på en automatiseret og gentagelig måde.

Azure CLI-kommandoer bruges til at illustrere begreber. Du kan få mere at vide om, hvordan du bruger kommandoer til at installere ressourcer i andre moduler i Bicep-læringsforløbet.

Definition af infrastruktur som kode

Din virksomhed designer nyt legetøj til udgivelse på markedet, og de fleste nye legetøj kræver noget samling efter køb. Virksomhedens designteam opretter instruktionsmanualer, der skal inkluderes i hvert legetøj. Hver manual indeholder oplysninger om, hvordan du korrekt samler legetøjet.

Du kan betragte infrastruktur som kode som værende som brugsvejledningen til din infrastruktur. Den manuelle beskrivelse af slutkonfigurationen af dine ressourcer, og hvordan du når denne konfigurationstilstand.

Infrastruktur som kode er processen med at automatisere klargøringen af infrastrukturen. Der bruges et beskrivende kodningssprog og et versionsstyringssystem, der svarer til det, der bruges til kildekoden. Når du opretter et program, genererer kildekoden det samme resultat, hver gang du kompilerer det. På samme måde automatiseres, konsistente og gentages udrulninger af infrastruktur som kode. Infrastruktur som kode kan automatisere udrulninger af dine infrastrukturressourcer, f.eks. virtuelle netværk, virtuelle maskiner, programmer og lager.

diagram, der viser infrastrukturen som kodeproces ved hjælp af et kildekodelager med en skabelon, der udruller Azure-ressourcer.

Hvis du tilbagekalder brugsanvisningen for det nye legetøj, er der flere måder at skrive instruktionsmanualen på. Én mulighed er at angive detaljer for hvert trin i oprettelsesprocessen. En anden mulighed er at vise en adskilt visning af de stykker og dele, der er nødvendige for at samle legetøjet. Senere i dette undermodul lærer du om forskellene mellem essentiel og deklarativ kode, og hvordan de er relateret til din virksomheds instruktionsvejledninger.

Hvorfor bruge infrastruktur som kode?

Brug af en infrastruktur som kodetilgang giver mange fordele ved klargøring af ressourcer. Med infrastruktur som kode kan du:

  • Øg tilliden til dine udrulninger.
  • Administrer flere miljøer.
  • Bedre forståelse af dine cloudressourcer.

Øg tilliden

En af fordelene ved at bruge infrastruktur som kode er det tillidsniveau, du opnår i dine udrulninger via forbedringer af konsistens og sikkerhed.

  • Integration med aktuelle processer: Hvis din organisation allerede bruger standardpraksis for softwareudvikling, kan du anvende de samme processer til udrulningen af infrastrukturen. Peer reviews kan f.eks. hjælpe med at registrere problemer i konfigurationer, der kan være svære at registrere, når du foretager manuelle ændringer.

  • Konsistens: Brug af en infrastruktur som kodetilgang hjælper dit team med at følge veletablerede processer for at udrulle infrastruktur. Ved at følge disse processer skifter ansvar fra en lille gruppe personer til din automatiseringsproces og -værktøjer. Infrastruktur som kode hjælper med at reducere menneskelige fejl i forbindelse med klargøring af ressourcer og sikre ensartede udrulninger.

  • Automatiseret scanning: Du kan scanne konfigurationer af infrastruktur som kode med automatiseret værktøj, der kan kontrollere, om der er fejl i koden. Automatiseret værktøj kan også gennemse foreslåede ændringer for at sikre, at sikkerheds- og ydeevnepraksis følges.

  • Secret management: Mange løsninger kræver hemmeligheder, f.eks. forbindelsesstrenge, krypteringsnøgler, klienthemmeligheder og certifikater. I Azure er en Azure Key Vault den tjeneste, der bruges til sikkert at gemme disse hemmeligheder. Mange værktøjer til infrastruktur som kode kan integreres med Key Vault for at få adgang til disse hemmeligheder sikkert ved udrulning.

  • adgangskontrol: Med udrulninger af infrastruktur som kode har du mulighed for at bruge administrerede identiteter eller tjenestekonti til at automatisere ressourceklargøring. Denne proces sikrer, at det kun er disse identiteter, der kan ændre dine cloudressourcer. Det hjælper også med at forhindre forkerte konfigurationer, der er udrullet til produktion. Hvis det er nødvendigt, kan du tilsidesætte denne proces ved hjælp af en nødadgangskonto (ofte kaldet en brudglaskonto) eller ved hjælp af funktionen Privilegeret identitetsstyring for Microsoft Entra ID.

  • Undgåkonfiguration: Idempotens er ofte knyttet til infrastruktur som kode. Når en handling er idempotent, betyder det, at den giver det samme resultat, hver gang du kører den. Hvis du vælger værktøjer, der bruger idempotenthandlinger, kan du undgå konfigurationsforskydning.

Som et eksempel på idempotens skal du overveje følgende Azure CLI-kommando. Kommandoen opretter en Azure-ressourcegruppe med navnet storage-resource-group i området Det østlige USA.

az group create \
  --name storage-resource-group \
  --location eastus

Hvis du kører denne kommando endnu en gang, modtager du nøjagtigt det samme output, fordi denne Kommandolinjegrænsefladekommando i Azure er designet til at være idempotent. Du får ikke vist en fejl eller en duplikeret ressourcegruppe.

Når du bruger infrastruktur som kode, kan du geninstallere dit miljø i hver version af din løsning. Disse udgivelser kan indeholde små konfigurationsændringer eller endda vigtige opdateringer. Denne proces hjælper med at undgå konfigurationsdrift. Hvis der foretages en utilsigtet ændring af en ressource, kan den rettes ved at geninstallere konfigurationen. Når du følger denne fremgangsmåde, dokumenterer du dit miljø ved hjælp af kode.

Administrer flere miljøer

Mange organisationer vedligeholder flere programmiljøer. Udviklerne i dit legetøjsfirma kan have flere versioner af programkoden, der er gemt i et lager til udgivelse i forskellige miljøer. Miljøer kan omfatte udvikling, test og produktion. Nogle organisationer vedligeholder flere produktionsmiljøer til programmer, der distribueres globalt. Andre organisationer, f.eks. uafhængige softwareleverandører, vedligeholder flere lejermiljøer for deres kunder.

Her er nogle af de vigtigste måder, hvorpå infrastruktur som kode kan hjælpe dig med at administrere dine miljøer:

  • Klargør nye miljøer: En af de største fordele ved cloudcomputing er muligheden for at skalere. Infrastruktur som kode kan hjælpe dig med at skalere til flere forekomster af dit program. Disse forekomster kan hjælpe i perioder med øget belastning, eller du kan udrulle dem til brugere i andre områder af verden. Denne fleksibilitet kan også være nyttig, når du tester dit program, f.eks. under indtrængningstest, belastningstest og fejltest. Med en veldefineret kodebase kan du dynamisk klargøre disse nye miljøer på en ensartet måde.

  • ikke-produktionsmiljøer: En almindelig problemorganisation står overfor, er differentiering mellem produktionsmiljøer og ikke-produktionsmiljøer. Når du manuelt klargør ressourcer i separate miljøer, er det muligt, at slutkonfigurationerne ikke stemmer overens. Et eksempel er, når du udruller en ny funktion i et ikke-produktionsmiljø, der adskiller sig fra produktionsmiljøet. Det er muligt, at den nye funktion ikke fungerer som forventet i produktionsmiljøet på grund af forskellene mellem de to miljøer. Brug af infrastruktur som kode kan hjælpe med at minimere disse problemer. Du kan bruge de samme konfigurationsfiler til hvert miljø, men angive forskellige inputparametre for at skabe entydighed.

  • it-katastrofeberedskab: I nogle situationer kan infrastruktur som kode bruges som en del af en organisations plan for it-katastrofeberedskab. Det kan f.eks. være, at du skal genoprette dit miljø i et andet område på grund af en tjenesteafbrydelse. Ved at bruge infrastruktur som kode kan du hurtigt klargøre en ny forekomst, der skal mislykkes, i stedet for manuelt at udrulle og omkonfigurere alt.

Bedre forståelse af dine cloudressourcer

Infrastruktur som kode kan hjælpe dig med bedre at forstå tilstanden for dine cloudressourcer:

  • overvågningsspor: Ændringer af konfigurationen af infrastrukturen som koden styres på samme måde som programkildekoden. Disse ændringer registreres i dit værktøj, f.eks. med Gits versionshistorik. Dette revisionsspor betyder, at du kan gennemse detaljerne for hver ændring, hvem der har foretaget ændringen, og hvornår ændringen blev foretaget.

  • dokumentation: Du kan bruge mange konfigurationer af infrastruktur som kode til at tilføje metadata, f.eks. kommentarer, som beskriver formålet med koden i konfigurationen. Hvis din organisation allerede følger en kodedokumentationsproces, kan du overveje at bruge de samme procedurer sammen med din infrastrukturkode.

  • Unified-system: Mange gange, når en udvikler arbejder på en ny funktion, skal vedkommende foretage ændringer af programkoden og infrastrukturkoden. Når du bruger et fælles system, kan din organisation bedre forstå relationen mellem dine programmer og din infrastruktur.

  • Bedre forståelse af cloudinfrastrukturen: Når du bruger Azure Portal til at klargøre ressourcer, udtrækkes mange af processerne fra visningen. Infrastruktur som kode kan hjælpe med at give en bedre forståelse af, hvordan Azure fungerer, og hvordan du foretager fejlfinding af problemer, der kan opstå. Når du f.eks. opretter en virtuel maskine ved hjælp af Azure Portal, indvindes nogle oprettede ressourcer fra visningen. Administrerede diske og netværksgrænsefladekort installeres i baggrunden. Når du udruller den samme virtuelle maskine ved hjælp af infrastruktur som kode, har du fuld kontrol over alle de ressourcer, der oprettes.

Essentiel og deklarativ kode

Du kan skrive en instruktionsvejledning til ny legetøjsassembly på forskellige måder. Når du automatiserer udrulningen af tjenester og infrastruktur, kan du benytte to fremgangsmåder: essentiel og deklarativ.

  • Med essentiel kodeudfører du en sekvens af kommandoer i en bestemt rækkefølge for at nå en slutkonfiguration. Denne proces definerer, hvad koden skal udføre, og den definerer, hvordan du udfører opgaven. Den essentielle tilgang er som en trinvis instruktionsmanual.

  • Med deklarativ kodeangiver du kun slutkonfigurationen. Koden definerer ikke, hvordan opgaven skal udføres. Den deklarative tilgang er som i brugsvejledningen til adskilt visning.

Når du vælger mellem at bruge en essentiel tilgang og en deklarativ tilgang til ressourceklargøring, skal du overveje de værktøjer, der muligvis allerede er i brug i din organisation. Overvej også, hvilken tilgang der kan matche dine egne færdigheder.

Essentiel kode

I Azure opnås en essentiel kodetilgang programmeringsmæssigt ved hjælp af et scriptsprog som Bash eller Azure PowerShell. Scriptene udfører en række trin for at oprette, redigere og endda fjerne dine ressourcer.

I dette eksempel vises to Azure CLI-kommandoer, der opretter en ressourcegruppe og en lagerkonto.

#!/usr/bin/env bash
az group create \
  --name storage-resource-group \
  --location eastus

az storage account create \
  --name mystorageaccount \
  --resource-group storage-resource-group \
  --location eastus \
  --sku Standard_LRS \
  --kind StorageV2 \
  --access-tier Hot \
  --https-only true

Den første kommando opretter en ressourcegruppe med navnet storage-resource-group i området Det østlige USA. Den anden kommando opretter en lagerkonto med navnet mystorageaccount i den storage-resource-group ressourcegruppe, der blev oprettet i den første kommando. Den anden kommando konfigurerer også nogle egenskaber for lagerkontoen, herunder typen af lagerkonto og dens adgangsniveau.

Du kan bruge en essentiel tilgang til fuldt ud at automatisere klargøring af ressourcer, men tilgangen har nogle ulemper. Efterhånden som din arkitektur udvikler sig, kan scripts blive komplekse at administrere. Kommandoer kan opdateres eller frarådes, hvilket kræver gennemsyn af eksisterende scripts.

Deklarativ kode

I Azure opnås en deklarativ kodetilgang ved hjælp af skabeloner. Der er mange typer skabeloner, der kan bruges, herunder:

  • JSON
  • Bicep
  • Ansible, af RedHat
  • Terraform, af HashiCorp

Seddel

I dette modul fokuseres der på brug af Bicep-skabeloner.

Se følgende eksempel på en Bicep-skabelon, der konfigurerer en lagerkonto. Konfigurationen af lagerkontoen svarer til Azure CLI-eksemplet.

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: 'mystorageaccount'
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
    supportsHttpsTrafficOnly: true
  }
}

Ressourceafsnittet definerer konfigurationen af lagerkontoen. Dette afsnit indeholder navnet, placeringen og egenskaberne for lagerkontoen, herunder sku'en og typen af konto.

Du vil måske bemærke, at Bicep-skabelonen ikke angiver, hvordan lagerkontoen skal installeres. Den angiver kun, hvordan lagerkontoen skal se ud. De faktiske trin, der udføres bag kulisserne for at oprette denne lagerkonto eller opdatere den, så den stemmer overens med specifikationen, overlades til Azure at beslutte.