IaC
Infrastructure as Code (Terraform & Pulumi)
Vi skriver jeres infrastruktur som kode med Terraform eller Pulumi, organiserer det i moduler og gør det normalt at provisionere et nyt miljø på en eftermiddag — ikke en uge.

Infrastruktur som kode
Det skiller en platform fra en sort boks
- Hver ændring reviewable som pull request
- Git
- Genbrug på tværs af miljøer og teams
- Modul
- Daglig plan fanger forskel mellem kode og virkelighed
- Drift
- Regler håndhævet automatisk i CI
- Policy
Sådan vi tænker IaC
Infrastruktur som software, ikke som klik.
Infrastructure-as-code er den tydelige skillelinje mellem en platform et team kan vedligeholde og en platform der kun den oprindelige konsulent forstår. Når jeres infrastruktur ligger som Terraform eller Pulumi i Git, kan ændringer reviewes som kode, miljøer kan reproduceres, og en ny udvikler kan se hvorfor systemet ser ud som det gør — i stedet for at gætte sig frem.
Vi skriver IaC for nye platforme fra dag ét, og vi konverterer eksisterende platforme der er bygget i konsollen til IaC når jeres team beslutter at tage kontrol. Vi organiserer koden i moduler der kan genbruges, sætter state-management op rigtigt (remote state, locking, separation pr. environment), og integrerer i jeres CI så ændringer planlægges, reviewes og applies systematisk — ikke ad hoc fra en developers maskine.
Vi defaulter til Terraform fordi økosystemet er størst og hyrings-pool'et bredest, men Pulumi er klart bedre når jeres team allerede arbejder i TypeScript eller Python og gerne vil have ægte sprog-features (loops, abstractions, typer) i stedet for HCL. Vi vælger ud fra hvor jeres team er, ikke ud fra trends.
Hvad I får leveret
En platform jeres team selv kan vedligeholde.
Moduler, state-management, CI-integration og policy-as-code — sat op rigtigt fra start.
Modul-design og struktur
Vi bygger moduler der dækker de mønstre I bruger igen og igen (VPC, ECS-service, RDS-instans, Cloudflare zone-setup) med tydelige inputs, outputs og dokumentation. Et nyt environment er en composition af moduler — ikke 800 linjer copy-paste.
State-management og backends
Remote state i S3 + DynamoDB locking, eller Terraform Cloud / Spacelift hvis I vil have UI og policy-engine. State separeres pr. environment så production aldrig kan ændres ved et uheld fra en udviklers maskine.
CI-integration og automated plans
Hver pull request får automatisk en plan i CI som kommentar — så reviewere ser hvad der faktisk ændres før de approver. Apply kører via CI med audit-log og kan kræve manuel godkendelse for production.
Multi-environment setup
Identiske miljøer (production, staging, ephemeral preview) bygget fra samme moduler, kun parametriseret pr. environment. Et nyt environment kan stables op på en eftermiddag, rives ned igen om aftenen.
Drift detection og policy-as-code
Daglig plan i CI fanger drift mellem kode og virkelighed. OPA, Sentinel eller Checkov sætter policy-as-code op ("ingen public S3 buckets", "alle RDS skal have backups") så regler håndhæves automatisk.
Konvertering fra konsol til IaC
Vi importerer eksisterende ressourcer (terraform import, terraformer) og strukturerer dem i moduler. Vi gør det uden nedetid og uden at slette ressourcer — bare tager kontrollen.
Inden I forpligter jer
Det her bør I overveje først.
Hvor stort skal det være?
En lille app behøver ikke en multi-account, multi-region IaC-organisation med 14 moduler. Vi skalerer kompleksiteten med behovet. For en typisk startup er én Terraform-stack pr. environment med en håndfuld moduler nok — vi udvider når I har et reelt problem at løse.
Terraform Cloud vs. selv-hostet vs. CI-only
Terraform Cloud (eller Spacelift, env0) giver UI, audit-log og policy-engine ud af æsken — godt for større teams. Selv-hostet i CI er simpelt og billigt — godt for små teams. Vi vælger ud fra hvor stort jeres team er og hvor meget governance I har brug for.
Lock-in mellem udbydere
Terraform er multi-cloud i teorien, men de fleste moduler er udbyder-specifikke. Vi designer kerne-arkitekturen så det er muligt at flytte (ingen aws_-specifikke tricks i forretnings-moduler), men vi lader være med at tvinge det hvor det koster reel værdi.
Hvem kan apply?
I starten kan alle udviklere typisk apply til staging, men kun én eller to kan apply til production — via CI med manuel godkendelse. Når I vokser, formaliserer vi det i policy-as-code og Just-in-Time-rettigheder. Vi designer for begge faser.
FAQ
Det folk plejer at spørge om.
Terraform eller Pulumi?
Terraform hvis jeres team allerede kender HCL, hvis I vil have det største økosystem af moduler og dokumentation, og hvis hyrings-poolet er vigtigt. Pulumi hvis jeres team er TypeScript- eller Python-folk og gerne vil have rigtige sprog-features (typer, loops, abstractioner) i stedet for HCL. Vi har bygget begge dele og rådgiver pragmatisk — ikke baseret på trends.
Kan I konvertere vores eksisterende AWS-setup til Terraform?
Ja. Vi importerer ressourcerne (typisk via terraformer eller terraform import), strukturerer dem i moduler og rydder op i drift mellem konsol og kode. Vi gør det uden at slette ressourcer eller tage produktionen ned. En typisk konvertering tager 4–10 uger afhængigt af kompleksitet — derefter har I en platform jeres team kan vedligeholde.
Hvor lang tid tager det at sætte IaC op fra bunden?
For en ny platform er IaC ikke en separat fase — det er hvordan vi bygger fra dag ét. For et eksisterende setup tager en grundig konvertering med modul-design, state-setup, CI-integration og dokumentation typisk 4–10 uger.
Kan vores team selv vedligeholde IaC efter handover?
Ja, det er en af hovedformålene. Vi skriver moduler med tydelige interfaces og dokumentation, kører workshops med jeres team og laver en formel handover. Hvis I vil have os til at vedligeholde løbende, kan vi det også — men koden er jeres og strukturen er forståelig.
Hvordan håndterer I secrets i IaC?
Secrets ligger aldrig i Terraform-state eller variabler. Vi bruger AWS Secrets Manager, HashiCorp Vault eller Doppler — Terraform refererer til dem, men værdierne ligger uden for state. Hvis state alligevel skal indeholde noget følsomt, krypterer vi backend-state med KMS og begrænser adgangen til to-tre personer.
Klar til at starte?
Lad os tage en uforpligtende snak.
Vi vender tilbage indenfor en arbejdsdag med konkret input — ikke et standardtilbud.