Modern IT practices maintain cloud infrastructure as code. It allows organizations to manage hardware as software and should be utilized where infrastructure management requires consistency and automation.

There are a number of IaC technologies in the market. Below is my opinion (as of mid-2021) on the common ones:
Platform | Level of Abstraction | Format | Readability | Length | Flexibility | API support | |
CloudFormation | AWS | Low | JSON or YAML template | Easy | Wordy | Low | Day-0 support |
ARM | Azure | Low | JSON template | Medium | Wordy | Low | Day-0 support |
Terraform | Multiple | Med | HCL | Medium | Medium | Med | Community Support |
CDK | AWS | High | Multiple Programming Languages | Hard | Concise | High | Day-0 support |
Bicep | Azure | Med | Improved JSON | Easy | Concise | Med | Day-0 support |
Pulumi | Multiple | High | Multiple Programming Languages | Hard | Concise | High | Community Support |
Some are based on markup code (YAML, JSON). Some are based on DSL (HCL, Bicep). Some uses general-purpose programming language. They also have different levels of flexibility, and different skill requirements.
Read more about infrastructure as code:
- Infrastructure deployment in Terraform 1/2 - Terraform is an excellent Infrastructure-as-Code (IaC) tool based on Hashicorp Configuration Language (HCL). Compared to JSON or YAML based declarative templates (e.g. CloudFormation and ARM), HCL is more concise, thanks to the flexibility of HCL. On the other hand, HCL is not as flexible as general purpose languages. For that… ... Read moreInfrastructure deployment in Terraform 1/2
- AWS CDK example in Typescript – provision an AWX server - This post provides an example of using AWS CDK in Typescript. Ansible Tower and AWX We have used open-source Ansible extensively in the past. While the automation is convenient, the lack of UI makes it not as suitable as a team collaboration tool. One way to allow team collaboration with… ... Read moreAWS CDK example in Typescript – provision an AWX server
- AWS CDK example in Python – provision Kubernetes Nodes - There are two mechanisms to initialize instances in AWS. Cloud init and CloudFormation Init. Both are widely used and we discuss each of them in this posting. Then we will give an example of using AWS CDK in Python. Cloud-Init Cloud-Init is a service originally built for Ubuntu, as a… ... Read moreAWS CDK example in Python – provision Kubernetes Nodes
- SSH key pair for access between instances in CloudFormation - Update 2023: the practice outlined in this post has been outdated. This post is for archive ony. We use CloudFormation to deploy infrastructure including private and public subnets, as well as EC2 instances. It is a good practice to place as many instances as possible in private subnet and access… ... Read moreSSH key pair for access between instances in CloudFormation
- Coordination between resources in AWS CloudFormation - Update 2023: the practice outlined in this post has been outdated. This post is for archive ony. One of the reasons I prefer CloudFormation over Terraform is access to Helper scripts. Many legacy applications are not built with statelessness and the installation depends on host information of other layers in… ... Read moreCoordination between resources in AWS CloudFormation
Contact Digi Hunch for Professional Services.