Skip to content

Infrastructure as Code

IaC is the process of managing and provisioning infrastructure through machine-readable configuration files, rather than physical hardware or interactive configuration tools. It helps achieve consistency, scalability, and automation in cloud environments.

Name Description Official Documentation
Ansible An open-source automation tool for configuration management and application deployment, widely used for IaC. Ansible Community Documentation
AWS CDK Is an open-source software development framework for defining cloud infrastructure in code and provisioning it through AWS CloudFormation. AWS Cloud Development Kit
Chef An open source systems management and cloud infrastructure automation platform. Chef Documentation
Pulumi Is an infrastructure-as-code platform for full-stack developers and cloud engineers who are interested in using a general-purpose programming language for their cloud resources. Pulumi Docs
Terraform IAC tool to provision and manage resources in any cloud or data center. Terraform Documentation
OpenTofu A community-driven open source fork of Terraform, fully compatible with existing Terraform configurations and providers. OpenTofu Documentation

Tool Comparison

Declarative vs Imperative

  • Declarative (Terraform, Pulumi, AWS CDK) - Define desired end state
  • Imperative (Ansible, Chef) - Define steps to achieve state

Language Support

  • HCL - Terraform, OpenTofu
  • YAML - Ansible, CloudFormation
  • Programming Languages - Pulumi (Python, TypeScript, Go, C#), AWS CDK (TypeScript, Python, Java, C#)
  • Ruby - Chef

Cloud Provider Support

  • Multi-cloud - Terraform, Pulumi, Ansible
  • AWS-focused - AWS CDK, CloudFormation
  • Agnostic - Chef, Ansible

Have any suggestions, additions, best-practices or references? Please contribute to help others learn!