Infrastructure as Code - or short: IaC - describes provisioning and configuration of complex data-center resources (compute, storage, network, ..) in configuration files or code.
The purpose is to have reproducible setups, that are versioned, have a history, can be code reviewed etc, while providing documentation.
First generation IaC came in variants of data serialization languages like JSON, YAML or TOML which were human-editable, but optimized for machine consumption.
- AWS CloudFormation
- Terraform HCL (well, it’s “in between”)
With the second generation IaC, the user (developer) interfaces moved to the realm of actual, high-level code, that allows to use higher level logic and integration in dynamic environments. Examples:
Especially the second generation enabled modularization and abstraction of complex infrastructure subsystems.
- Application Platform as Code
- OS Configuration Management
- Programmable Infrastructure