IaC-verktyg som Terraform, Pulumi och AWS CloudFormation använder en deklarativ modell. Du beskriver det önskade sluttillståndet för infrastrukturen, och verktyget beräknar de steg som behövs för att nå det tillståndet. Den deklarativa modellen innebär att samma konfiguration kan tillämpas upprepade gånger och producerar samma resultat. Detta är idempotens, och det är den egenskap som gör IaC tillförlitlig i automatiserade pipelines.
Samarbetsfördelen med IaC är betydande. När infrastruktur definieras som kod kan den granskas i en pull request som vilken annan kodändring som helst. En kollega kan fråga 'varför är denna säkerhetsgrupp öppen på port 443 till 0.0.0.0/0?' innan resursen skapas. Detta är mycket effektivare än att upptäcka felkonfigurationen i en molnsäkerhetsgranskning månader senare.
Det mentala skiftet som IaC kräver är att se manuella ändringar av infrastruktur, att klicka i molnkonsolen, som undantag som skapar teknisk skuld snarare än som normala operationer. Varje manuell ändring är en ändring som inte finns i versionskontroll, inte är granskad, inte testad och inte automatiskt reproducerbar.
IaC är särskilt kraftfullt i DevSecOps eftersom det gör det möjligt att tillämpa infrastruktursäkerhetspolicy automatiskt. Säkerhetsregler som 'all lagring måste krypteras i vila' kan uttryckas som IaC-skanningspolicyer som körs i pipelinen innan någon apply sker.