Infrastructure as Code (IaC)

The idea is that all infrastructure (web servers, databases, ingresses, message queues, etc) for a given environment are represented in code and configuration. Infrastructure setup and teardown for an entire environment is automated, repeatable, and idempotent.

The two main types of IaC are declarative, and imperative. Essentially, declarative systems describe the “what”, while imperative systems describe the “how”.

Vendors

The table below describes some of the most mature options for IaC.

NamePrimary MethodCorporate Sponsor, if any
TerraformDeclarativeHashicorp
AnsibleImperativeRedHat
SaltStackImperative
PuppetImperative
ChefImperative