Hvad er infrastruktur som kode? Hvordan virker det?
Infrastructure as Code (IaC) gør det muligt for udviklere at levere it-miljøer med flere linjer kode. I modsætning til manuelle infrastrukturopsætninger, der kræver timer eller endda dage at konfigurere, tager det minutter at implementere et IaC-system.
Denne artikel forklarer koncepterne bag Infrastructure as Code. Du vil lære, hvordan IaC fungerer, og hvordan automatiske konfigurationer gør det muligt for teams at udvikle software med højere hastighed og reducerede omkostninger.
Hvad er Infrastructure as Code (IaC)?
Infrastruktur som kode er processen med at klargøre og konfigurere et miljø gennem kode i stedet for manuelt at opsætte de nødvendige enheder og systemer. Når kodeparametre er defineret, kører udviklere scripts, og IaC-platformen bygger skyinfrastrukturen automatisk.
Sådanne automatiske it-opsætninger gør det muligt for teams hurtigt at skabe den ønskede cloud-indstilling for at teste og køre deres software. Infrastructure as Code giver udviklere mulighed for at generere enhver infrastrukturkomponent, de har brug for, herunder netværk, belastningsbalancere, databaser, virtuelle maskiner og forbindelsestyper.
Sådan fungerer infrastruktur som kode
Her er en trin-for-trin forklaring på, hvordan oprettelse af et IaC-miljø fungerer:
- En udvikler definerer konfigurationsparametrene i et domænespecifikt sprog (DCL).
- Instruktionsfilerne sendes til en masterserver, et administrations-API eller et kodelager.
- IaC-platformen følger udviklerens instruktioner til at oprette og konfigurere infrastrukturen.
Med IaC behøver brugerne ikke at konfigurere et miljø, hver gang de vil udvikle, teste eller implementere software. Alle infrastrukturparametre gemmes i form af filer kaldet manifester.
Som alle kodefiler er manifester nemme at genbruge, redigere, kopiere og dele. Manifester gør opbygning, test, iscenesættelse og implementering af infrastruktur hurtigere og ensartet.
Udviklere kodificerer konfigurationsfilerne, der gemmer dem i versionskontrol. Hvis nogen redigerer en fil, kan pull-anmodninger og arbejdsgange for kodegennemgang kontrollere ændringernes rigtighed.

Hvilke problemer løser Infrastruktur som kode?
Infrastruktur som kode løser de tre hovedproblemer ved manuelle opsætninger:
- Høj pris
- Langsomme installationer
- Uoverensstemmelser i miljøet
Høj pris
Manuel opsætning af hvert it-miljø er dyrt. Du har brug for dedikerede ingeniører til opsætning af hardware og software. Netværks- og hardwareteknikere kræver supervisorer, så der er flere administrationsomkostninger.
Med Infrastructure as Code opsætter et centralt styret værktøj et miljø. Du betaler kun for de ressourcer, du bruger, og du kan hurtigt skalere dine ressourcer op og ned.
Langsomme installationer
For manuelt at konfigurere en infrastruktur skal ingeniørerne først rack serverne. De konfigurerer derefter hardwaren og netværket manuelt til de ønskede indstillinger. Først da kan ingeniører begynde at opfylde kravene til operativsystemet og den hostede applikation.
Denne proces er tidskrævende og udsat for fejl. IaC reducerer opsætningstiden til minutter og automatiserer processen.
Miljømæssige uoverensstemmelser
Når flere personer manuelt implementerer konfigurationer, vil der helt sikkert forekomme uoverensstemmelser. Med tiden bliver det svært at spore og gengive de samme miljøer. Disse uoverensstemmelser fører til kritiske forskelle mellem udviklings-, kvalitetssikrings- og produktionsmiljøer. I sidste ende forårsager forskellene i indstillinger uundgåeligt implementeringsproblemer.
Infrastruktur som kode sikrer kontinuitet, da miljøer klargøres og konfigureres automatisk uden plads til menneskelige fejl.
Infrastrukturens rolle som kode i DevOps
Infrastruktur som kode er afgørende for DevOps. Agile processer og automatisering er kun mulig, hvis der er en let tilgængelig it-infrastruktur til at køre og teste koden.
Med IaC nyder DevOps-teams bedre test, kortere gendannelsestider og mere forudsigelige implementeringer. Disse faktorer er afgørende for hurtig levering af software. Ensartede it-miljøer mindsker chancerne for, at der opstår fejl i DevOps-pipelinen.
IaC-tilgangen har ingen begrænsninger, da DevOps-teams leverer alle aspekter af den nødvendige infrastruktur. Ingeniører opretter servere, implementerer operativsystemer, containere, applikationskonfigurationer, opsætter datalagring, netværk og komponentintegrationer.
IaC kan også integreres med CI/CD værktøjer. Med den rigtige opsætning kan koden automatisk flytte appversioner fra et miljø til et andet til testformål.

Lær hvorfor virksomheder i stigende grad henvender sig til DevOps i vores artikel Infrastructure in the Age of DevOps.
Fordele ved infrastruktur som kode
Her er fordelene, en organisation får fra Infrastructure as Code:
Fart
Med IaC klargør og konfigurerer teams hurtigt infrastruktur til udvikling, test og produktion. Hurtige opsætninger fremskynder hele softwareudviklingens livscyklus.
Svarprocenten på kundefeedback er også hurtigere. Udviklere tilføjer nye funktioner hurtigt uden at skulle vente på flere ressourcer. Hurtige vendinger til brugeranmodninger forbedrer kundetilfredsheden.
Standardisering
>Udviklere kommer til at stole på systemets ensartethed under leveringsprocessen. Der er ingen konfigurationsdrift, en situation, hvor forskellige servere udvikler unikke indstillinger på grund af hyppige manuelle opdateringer. Driftsproblemer fører til problemer ved implementering og sikkerhedsproblemer.
IaC forhindrer konfigurationsdrift ved at klargøre det samme miljø, hver gang du kører det samme manifest.
Genanvendelighed
DevOps-teams kan genbruge eksisterende IaC-scripts i forskellige miljøer. Der er ingen grund til at starte fra bunden, hver gang du har brug for ny infrastruktur.
Samarbejde
Versionsstyring giver flere personer mulighed for at samarbejde om det samme miljø. Takket være versionskontrol arbejder udviklere på forskellige infrastruktursektioner og udruller ændringer på en kontrolleret måde.
Effektivitet
Infrastructure as Code forbedrer effektiviteten og produktiviteten på tværs af udviklingens livscyklus.
Programmører skaber sandkassemiljøer for at udvikle sig isoleret. Operations kan hurtigt levere infrastruktur til sikkerhedstest. QA-ingeniører har perfekte kopier af produktionsmiljøerne under test. Når det er implementeringstid, skubber udviklere både infrastruktur og kode til produktion i ét trin.
IaC holder også styr på alle miljøopbygningskommandoer i et lager. Du kan hurtigt gå tilbage til en tidligere forekomst eller geninstallere et miljø, hvis du støder på et problem.
Lavere omkostninger
IaC reducerer omkostningerne ved at udvikle software. Der er ingen grund til at bruge ressourcer på at opsætte miljøer manuelt.
De fleste IaC-platforme tilbyder en forbrugsbaseret omkostningsstruktur. Du betaler kun for de ressourcer, du aktivt bruger, så der er ingen unødvendige overhead.
Skalerbarhed
IaC gør det nemt at tilføje ressourcer til eksisterende infrastruktur. Opgraderinger leveres hurtigt og med lethed, så du hurtigt kan udvide i burst-perioder.
For eksempel kan organisationer, der kører onlinetjenester, nemt skalere op for at følge med brugernes krav.
Disaster Recovery
I tilfælde af en katastrofe er det nemt at genoprette store systemer hurtigt med IaC. Du kører bare det samme manifest igen, og systemet vil være online igen et andet sted, hvis det bliver nødvendigt.

Infrastruktur som kodeks for bedste praksis
Brug lidt til ingen dokumentation
Definer specifikationer og parametre i konfigurationsfiler. Der er ikke behov for yderligere dokumentation, der bliver ude af sync med de konfigurationer, der er i brug.
Versionskontrol Alle konfigurationsfiler
Placer alle dine konfigurationsfiler under kildekontrol. Versionering giver fleksibilitet og gennemsigtighed ved styring af infrastruktur. Det giver dig også mulighed for at spore, administrere og gendanne tidligere manifester.
Test konstant konfigurationerne
Test og overvåg miljøer, før der skubbes ændringer til produktionen. For at spare tid kan du overveje at konfigurere automatiske test til at køre, hver gang konfigurationskoden bliver ændret.
Gå modulært
Opdel din infrastruktur i flere komponenter og kombiner dem derefter gennem automatisering. IaC-segmentering giver mange fordele. Du kontrollerer, hvem der har adgang til visse dele af din kode. Du begrænser også antallet af ændringer, der kan foretages på manifester.
Infrastruktur som kodeværktøjer
IaC-værktøjer fremskynder og automatiserer leveringen af cloud-miljøer. De fleste værktøjer overvåger også tidligere oprettede systemer og ruller ændringer til koden tilbage.
Selvom de varierer med hensyn til funktioner, er der to hovedtyper af infrastruktur som kodeværktøjer:
- Imperative værktøjer
- Deklarative værktøjer
Imperative tilgangsværktøjer
Værktøjer med en imperativ tilgang definerer kommandoer for at gøre det muligt for infrastrukturen at nå den ønskede tilstand. Ingeniører opretter scripts, der leverer infrastrukturen et trin ad gangen. Det er op til brugeren at bestemme den optimale implementeringsproces.
Den imperative tilgang er også kendt som den proceduremæssige tilgang.
Sammenlignet med deklarative tilgangsværktøjer kræver imperativ IaC mere manuelt arbejde. Der kræves flere opgaver for at holde scripts opdateret.
Imperative værktøjer passer bedre til systemadministratorer, der har en baggrund i scripting.
const aws = require("@pulumi/aws");
let size = "t2.micro";
let ami = "ami-0ff8a91507f77f867"
let group = new aws.ec2.SecurityGroup("webserver-secgrp", {
ingress: [
{protocol: "tcp", fromPort: 22, toPort: 22, cidrBlocks: ["0.0.0.0/0"] },
],
});
let server = new aws.ec2.Instance("webserver-www", {
instanceType: size,
securityGroups: [ group.name ],
ami: ami,
});
exports.publicIp = server.publicIp;
exports.publicHostName= server.publicDns;IaC-eksempel (ved brug af Pulumi)
Værktøjer til deklarativ tilgang
En deklarativ tilgang beskriver den ønskede tilstand af infrastrukturen uden at angive trinene for at nå denne tilstand. IaC-værktøjet behandler kravene og konfigurerer derefter automatisk den nødvendige software.
Selvom der ikke er behov for trin-for-trin instruktion, kræver den deklarative tilgang en dygtig administrator til at opsætte og administrere miljøet.
Deklarative værktøjer henvender sig til brugere med stærk programmeringserfaring.
resource "aws_instance" "myEC2" {
ami = "ami-0ff8a91507f77f867"
instance_type = "t2.micro"
security_groups = ["sg-1234567"]
}Deklarativ infrastruktur som kodeeksempel (ved hjælp af Terraform)
Populære IaC-værktøjer
De mest udbredte værktøjer til infrastruktur som kode på markedet omfatter:
- Terraform: Dette open source deklarative værktøj tilbyder forudskrevne moduler, som du udfylder med parametre til at bygge og administrere en infrastruktur.
- Pulumi: Den største fordel ved Pulumi er, at brugerne kan stole på deres yndlingssprog til at beskrive den ønskede infrastruktur.
- Puppet: Ved brug af Puppets Ruby-baserede DSL definerer du den ønskede tilstand af infrastrukturen, og værktøjet skaber automatisk miljøet.
- Ansible: Ansible giver dig mulighed for at modellere infrastrukturen ved at beskrive, hvordan komponenterne og systemerne relaterer til hinanden.
- Kok: Kokken er det mest populære imperative værktøj på markedet. Chef tillader brugere at lave "opskrifter" og "kogebøger" ved hjælp af sin Ruby-baserede DSL. Disse filer specificerer de nøjagtige trin, der er nødvendige for at opnå det ønskede miljø.
- SaltStack: Det, der adskiller SaltStack, er enkelheden ved at klargøre og konfigurere infrastrukturkomponenter.
Lær mere om Pulumi i vores artikel Hvad er Pulumi?
Ønsker du at forblive konkurrencedygtig, er IaC ikke valgfrit
Infrastruktur som kode er en effektiv måde at følge med i det høje tempo i den aktuelle softwareudvikling. I en tid, hvor it-miljøer skal bygges, ændres og rives ned dagligt, er IaC et krav for ethvert team, der ønsker at forblive konkurrencedygtigt.
PhoenixNAPs Bare Metal Cloud-platform understøtter API-drevet levering af servere. Det er også fuldt integreret med Ansible og Terraform, to af de førende Infrastructure as Code-værktøjer.
Få mere at vide om Bare Metal Cloud og hvordan det kan hjælpe med at drive en organisations Infrastructure as Code-indsats.