Infrastructure as Code (IaC)
What Is IaC?
Administrators historically configured each server manually, often using complex to maintain shell scripts and applying this configuration on a server-by-server basis required specialist knowledge, particularly in deployments with various operating systems.
Cloud-based deployments augment and replace on-premises machine rooms. And Infrastructure as Code replaces complex shell scripts. IaC provides a solution for managing web-scale, distributed systems on the cloud. It includes support for the instantiation of resources of:
- Cloud-Native applications
- Databases
- Virtual Machines
- Networks
- Load balancers
- Ingress
IaC being declarative, can generate the same environment for each application, providing a simple solution to configure any number of permutations.
For DevOps teams who require a consistent and efficient solution IaC provides a compelling use case.
Following on from the Terraform deep dive, I’ve been looking at alternative Infrastructure as Code solutions. Where Terraform has it’s own DSL, recently I’ve been looking at solutions that are programming language based. Although leveraging imperative programming languages, most of these solutions are used for declarative IaC. That is the user defines the desired state of the infrastructure, the tooling generates configuration for the requested resources.
A primary reason for looking at alternatives to Terraform is that although the DSL used in Terraform (HCL) enforces a strict schema, something I consider a positive. When you look at how it does basic flow control operations for example, it is limited to for loops and switch statements, similarly the standard utility functions that are available in Terraform are also limited.
There are a number of language orientated IaC tools available, below are the three primary solutions used for AWS:
All solution provide implementations in Go, though the AWS CDK solution is considered pre-release currently. Pulumi is a paid service. Don’t know much about the Terraform solution yet.
Over the next few months, time permitting I intend to explore one of the CDK solutions further.