Infrastructure-as-Code (IaC) er en praksis hvor infrastruktur, såsom netværk, virtuelle maskiner, databaser og sikkerhedsregler beskrives ved hjælp af kode.
I praksis vil man, ved at skrive kode, der beskriver den ønskede tilstand af infrastruktursressourcer og efterfølgende benytte automatiseringsværktøjer, være i stand til at oprette, opdatere og styre disse ressourcer på en konsekvent og genskabelig måde. Koden kan være versionskontrolleret (f.eks. ved brug af Git) som enhver anden softwarekode, så teams kan holde styr på ændringer, samarbejde og endda rulle ændringer tilbage, når det er nødvendigt.
Der er mange teknologier og værktøjer til rådighed til implementering af IaC - nogle af de mere populære eksempler inkluderer:
- Terraform: Et open source værktøj fra Hashicorp, der giver teams mulighed for at skrive kode til at styre infrastruktur ressourcer på tværs af flere cloud providers og lokale miljøer (onprem).
- Ansible: Et open source automatiseringsværktøj, der giver teams mulighed for at skrive og administrere playbooks for at automatisere konfigurationen af servere, netværksenheder og andre infrastruktur ressourcer.
- Cloudformation: En IaC-service leveret af Amazon Web Services (AWS), der giver brugerne mulighed for at definere og administrere AWS-ressourcer som kode.
Brugen af IaC og værktøjer som Terraform og Ansible, kommer dit team til gode på mange måder - nedenfor listes blot et par af dem:
- Hurtigere og mere pålidelig opsætning af infrastruktur: Infrastruktur kan leveres og konfigureres automatisk og konsekvent, hvilket reducerer potentialet for fejl og fremskynder implementeringsprocessen.
- Forbedret samarbejde: Versionskontrolsystemer giver teams mulighed for at samarbejde om infrastrukturkode, ligesom de ville med enhver anden softwarekode.
- Bedre sikkerhed og efterlevelse: IaC giver teams mulighed for at specificere sikkerheds- og efterlevelseskrav direkte i kode, reducere potentialet for manuelle fejl og sikre konsistens på tværs af infrastruktur ressourcer.
- Forenklet styrring: IaC giver teams mulighed for at styre infrastruktur ressourcer i større skala med mindre indsats og kompleksitet, hvilket reducerer byrden på it-driften.
IaC kan bruges i forskellige sammenhænge, herunder cloud computing, datacentre og hybridmiljøer. Det er især nyttigt for organisationer, der ønsker at automatisere og strømline deres process omkring infrastruktur, eller som ønsker at gøre deres infrastruktur mere forudsigelig og skalerbar. Nogle almindelige cases til IaC inkluderer:
- Distribution og styring af cloud-infrastruktur
- Tilvejebringelse og konfiguration af lokale servere (onprem)
- Distribution og styring af container-infrastruktur
- Distribution og styring af mikroservices arkitekturer
- Håndtering og opdatering af infrastruktur til flere miljøer (f.eks. development, staging, production)
- Migrering af infrastruktur mellem cloud providers