Infrastructure as code (IaC)
Også kendt som: IaC
At beskrive servere, netværk og cloud-indstillinger i tekstfiler, som et værktøj bygger ud fra, i stedet for at sætte dem op i hånden.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En praksis, hvor den ønskede tilstand for servere, netværk, adgangsregler og cloud-tjenester skrives i filer under versionsstyring, og et værktøj sammenligner tilstanden med det, der findes, og laver de ændringer, der skal til for at de passer sammen.
Forklaret enkelt
Som en detaljeret opskrift i stedet for kokkens hukommelse; alle kan lave den samme ret igen, og man kan se præcis, hvilken ingrediens der er ændret siden sidst.
I praksis
En udvikler i en mindre dansk softwarevirksomhed genopbygger hele firmaets testmiljø i skyen ud fra filer på tyve minutter; ved gennemgangen opdager en kollega, at et lagerområde var ved at blive åbnet mod internettet.
Hvorfor det betyder noget
Indstillinger lavet i hånden skrider, bliver glemt og kan ikke efterprøves; skrevne indstillinger kan gennemgås, testes for kendte fejl og genopbygges ens efter en katastrofe.
Teknisk uddybning
IaC-værktøjer falder i to familier. Deklarative provisioneringsværktøjer - Terraform og forgreningen OpenTofu (HCL), AWS CloudFormation, Azure Bicep/ARM-skabeloner, Pulumi (almindelige programmeringssprog, der opbygger en deklarativ ressourcegraf) og Crossplane (Kubernetes custom resources) - beskriver sluttilstanden og lader en motor beregne trinene. Konfigurationsstyringsværktøjer som Ansible, Puppet og Chef bringer eksisterende maskiner i den ønskede tilstand; Ansible-playbooks er procedurale i opbygningen, men skrives idempotent, så en ny kørsel på et korrekt system ikke ændrer noget. Idempotens og konvergens er kerneegenskaberne: anvendes den samme kode to gange, skal resultatet være den samme infrastruktur.
Terraforms arbejdsgang viser mekanikken. terraform plan opdaterer den registrerede tilstand, kalder providernes API'er for at læse de reelle ressourcer, opbygger en afhængighedsgraf og udskriver en diff med oprettelser, opdateringer, ændringer på stedet og udskiftninger; terraform apply udfører den og paralleliserer uafhængige operationer. State-filen kobler hver ressourceadresse til dens reelle ID og gemmer alle attributter - også genererede adgangskoder og nøgler i klartekst - så den skal ligge i en fjern backend med kryptering, stram adgangskontrol og låsning, der forhindrer samtidige apply-kørsler. Afvigelser (drift) opstår, når nogen ændrer en ressource uden om koden; de opdages ved næste plan (eller ved planlagte drift-kørsler eller CloudFormations drift detection) og bliver enten importeret tilbage i koden eller overskrevet. Uforanderlig infrastruktur undgår ændringer på stedet helt ved at udskifte servere eller images ved hver ændring.
I august 2023 flyttede HashiCorp Terraform fra MPL 2.0 til Business Source License 1.1, hvilket førte til fællesskabsforgreningen OpenTofu under Linux Foundation, der siden har tilføjet funktioner som klientside-kryptering af state. Organisationer bør registrere, hvilket værktøj og hvilken licens de afhænger af, fordi økosystemerne af providers og moduler er fælles, men glider fra hinanden.
Sikkerhedsgevinsten kommer af, at konfigurationen kan gennemgås og testes, før den findes: statiske analyseværktøjer (Checkov, Trivy/tfsec, KICS) og policy as code-motorer (OPA/Conftest, HashiCorp Sentinel) tjekker for offentlige lagerbuckets, åbne security groups, manglende kryptering eller logning, ofte koblet til CIS Benchmarks, og kan blokere pull requesten. IaC giver også sin egen forsyningskæde: providers og tredjepartsmoduler kører med pipelinens cloud-legitimationsoplysninger, så versioner bør låses, og afhængighedslåsefilen (.terraform.lock.hcl, der registrerer providernes checksummer) bør committes. Plan-output og logs kan lække hemmeligheder, og de legitimationsoplysninger, apply bruger, er som regel meget privilegerede, så fødererede kortlivede identiteter og adskilte rettigheder til plan og apply er standard. IaC er den deklarative beskrivelse; GitOps tilføjer løbende, pull-baseret afstemning af den beskrivelse.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Versionsstyring
- →Infrastructure as code (IaC)
Relationer
- Forudsætter
- Versionsstyring
- Åbner for
- GitOps
- Afbøder
- Fejlkonfiguration i skyen
Kilder og videre læsning
Standarder og officielle tekster
Lærebøger
- Infrastructure as Code (Kief Morris, O'Reilly)
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…