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 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|
|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 – building AWX (Ansible) server - 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 open-source Ansible, is to use Jenkins to glue the components together,… ... Read moreAWS CDK example in Typescript – building AWX (Ansible) server
- AWS CDK example in Python – building self-managed 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. Cloud-Init Cloud-Init is a service originally built for Ubuntu, as a bootstrapping utility to customize a Linux VM as it boots for the… ... Read moreAWS CDK example in Python – building self-managed Kubernetes Nodes
- SSH key pair for access between instances in CloudFormation - 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 those only from Bastion Host in the public subnet. For smaller systems it is even common to… ... Read moreSSH key pair for access between instances in CloudFormation
- Coordination between resources in AWS CloudFormation - 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 the stack. This requires communication among instances during stack creation. The cloudformation Helper script (cfn-init, cfn-signal, cfn-hup… ... Read moreCoordination between resources in AWS CloudFormation
Contact Digi Hunch for Professional Services.