Leveraging Infrastructure as Code for Resource Management


2 min read

In the ever-evolving world of infrastructure management on the cloud, the choice of IaC tool remains critical. A recent project presented the opportunity to delve into this, with Terraform and AWS CloudFormation being the forerunners.

While both tools offer powerful and similar capabilities, key factors led to CloudFormation being chosen over Terraform. This decision was heavily influenced by the team's exclusive use of AWS as their primary cloud provider. However, for other projects with multi-cloud support, a tool like Terraform should be considered. It offers several advantages over provider-specific IAC tools like CloudFormation, GCP Deployment Manager, or Azure Resource Manager templates.

Terraform supports numerous cloud and non-cloud providers and is not restricted to any of them. This flexibility facilitates multi-cloud deployments and lessens vendor lock-in. It gives you a convenient way to manage all your infrastructure as code without having to learn separate tools and configuration syntax for each platform and service. Furthermore, Terraform builds a resource graph, which acts as an internal representation of all resources and their dependencies. It dictates how resources are created, updated, or destroyed.

Furthermore, Terraform utilises state management. A state file is used to record the state of deployed resources. A simple 'terraform show' command lists the resources being managed by Terraform. On the other hand, CloudFormation uses stack-based management, which may not necessarily provide the same level of visibility over resource states.

Overall, Terraform provides more flexibility, modularity, and multi-cloud compatibility than vendor-specific tools, making it the better choice for organisations looking for a unified, scalable, and extensible approach to infrastructure as code.