Before we touch on what Terraform is, let’s understand why Terraform? & where and how it will be used. In this digital transformation trend, cloud native and cloud first strategy has been adopted by customer’s around the globe. With increased adoption of cloud native approach, the providers like AWS, Azure and GCP has become the first choice to host the infrastructure. Any application say it could be as simple as static website on cloud storage, cloud instance, containers or functions, some sort of base infrastructure is required.
It takes considerable time to provision the production grade required resources, the infrastructure could be as small as single instance or as complex as multi-cloud application there are efforts involved. Even though we say the deployments on cloud is much more faster then on-premise, still i feel there are considerable amount of preparations to be done.
Here is the snippet from one of the video which talks about almost the same idea which i am trying to covey here. By looking at the snip below, you can guess how much average time it takes.
Developers today use Cloud Infrastructure as their playground for Test/Dev deployments or either they are using it for developing production grade applications. However many of the case they will need infrastructure at almost all the time during this process. Most of these infrastructure components are made available either manually or via SDK. Provisioning is easy task but there are few challenges associated, to name a few like; increase in monthly cost, no capacity planning, random requirements, lack of visibility and observability, cumbersome administration and the list continues. These challenges has a direct impact on the cloud usage and metering.
To overcome these challenges the concept called “Infrastructure-As-Code (IAC)” is introduced. IAC in short is modern way of infrastructure deployment, what you code is what you will get. Cloud Vendors like AWS, Microsoft Azure, Google Cloud has there native IAC tools for the infrastructure deployments in there own space. But the tools like Terraform, Pulumi, Anisible are vendor neutral, means they are multi cloud, multi environment infrastructure provisioning tool. The coding language what you will write in these tools are capable to deploy scalable infrastructure components in multiple cloud environment.
As i mentioned there are multiple products in this space, but the most used is Hashicorp Terraform. As mentioned on terraform.io website “Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently” Here is the bit of a history and how product has been evolved.
Let’s see why developers, architects, cloud administrators, devops team prefers Terraform as there IAC tool for provisioning tool. Most of the cloud native deployments are not restricted to single region or single cloud providers, they are diverse and multi-cloud, hence the biggest advantage of Terraform is that its cloud agnostics. Its purpose built to achieve the desired state configuration of the infrastructure. In the below infographic i have tried to incorporate the features and relevant basic information in a single page. In the upcoming blogs i will take each core topic based on Terraform and How to Clear “Terraform Associate Engineer Exam”