Day 64 : Terraform with AWS
Provisioning resources on Amazon Web Services (AWS) has become a streamlined process thanks to tools like Terraform. In this post, we'll explore how Terraform simplifies the deployment of AWS resources and walk through a basic setup to provision an EC2 instance.
Prerequisites:
AWS CLI installed
The AWS Command Line Interface (AWS CLI) is a unified tool to manage your AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts.
Create an EC2 instance.
SSH into the EC2 instance
Install AWS CLI
sudo apt install awscli
AWS IAM user
IAM (Identity Access Management) AWS Identity and Access Management (IAM) is a web service that helps you securely control access to AWS resources. You use IAM to control who is authenticated (signed in) and authorized (has permissions) to use resources.
Create Access key for IAM user.
Click on 'Create access key'
To connect your AWS account and Terraform, you need the access keys and secret access keys exported to your machine.
export AWS_ACCESS_KEY_ID=<access key>
export AWS_SECRET_ACCESS_KEY=<secret access key>
Install required providers
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
required_version = ">= 1.2.0"
}
The terraform block defines the version of Terraform that is required to execute this configuration. In this case, it specifies that the Terraform version must be \>= 1.2.0.
The required_providers block declares the AWS provider and its version that Terraform will use for the resources defined in this configuration. In this case, it declares the AWS provider with the source hashicorp/aws and specifies that the version of the provider should be ~> 4.16, which means any version of the AWS provider greater than or equal to 4.16 and less than 5.0 will be acceptable.
Add the region where you want your instances to be
provider "aws" {
region = "ap-south-1"
}
Task-01
Provision an AWS EC2 instance using Terraform
resource "aws_instance" "aws_ec2_demo" {
count = 2
ami = "ami-05e00961530ae1b55"
instance_type = "t2.micro"
tags = {
Name = "TerraformTestInstance"
}
}
The resource block has a resource type of "aws_instance" and a resource name of "aws_ec2_demo". The count parameter is set to 2, which means that two instances will be created.
The ami parameter specifies the Amazon Machine Image (AMI) to use for the instances. In this case, the AMI ID is "ami-05e00961530ae1b55".
The instance_type parameter specifies the type of instance to create. In this case, the instance type is "t2.micro".
The tags parameter specifies metadata to attach to the instance, in this case, a tag named "Name" with the value "TerraformTestInstance".
Initialize the working directory with the necessary plugins and modules by executing the Terraform init
It will create an execution plan by analyzing the changes required to achieve the desired state of your infrastructure with a terraform plan.
it will apply the changes to create or update resources as needed with terraform apply.
Two instances should be created using Terraform.
Conclusion
Terraform's integration with AWS simplifies infrastructure as code (IaC) by providing a declarative way to define and manage resources. This reduces manual errors, improves scalability, and enables efficient resource provisioning and maintenance.
By following these steps, you can harness the power of Terraform to automate AWS infrastructure deployments, saving time and ensuring consistency across your environments.
I'm confident that this article will prove to be valuable, helping you discover new insights and learn something enriching .
thank you : )
Subscribe to my newsletter
Read articles from Prathmesh Vibhute directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by