Working With Terraform

  • Write a comparison between Ansible Vs Docker Vs Terraform
  • Write a terraform script where you create a linux ec2 instance with Security group and key defined so you should be able to use key to login to ec2 instance.

Terraform VS Ansible

  • Terraform focus on infrastructure provisioning where as ansible fits well in traditional automation.
  • Terraform acts perfectly in configuring cloud infrastructure where as ansible is employed for configuring servers.
  • Using terraform one can deploy load balancers, VPCs, etc. where as with ansible one can deploy apps on the top of infrastructure.
  • Terraform uses declarative language where as ansible uses procedural.

Terraform VS Docker

  • Docker Machine belongs to “Container Tools” category of the tech stack, while Terraform can be primarily classified under “Infrastructure Build Tools”.
  • “Easy docker hosts management” is the primary reason why developers consider Docker Machine over the competitors, whereas “Infrastructure as code” was stated as the key factor in picking Terraform.
Step 1:- Initializing Terraform Script

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  region = "us-west-2"

}

resource "aws_instance" "avinash" {
  ami           = "ami-03d5c68bab01f3496"
  instance_type = "t2.micro"  
}

- Save the fie with .tf extension
- In the command prompt run the code terraform init 
Note:- the ami should be created in the same region as mentioned in the provider "aws"  
Step 2:- Managing Permissions Using Security Keys
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.0"
    }
  }
}

# Configure the AWS Provider
provider "aws" {
  region = "us-west-2"
  access_key = ""
  secret_key = ""
}

resource "aws_instance" "avinash" {
  ami           = "ami-03d5c68bab01f3496"
  instance_type = "t2.micro"
  

}

- Save the file and run the command terraform plan
- after the command is a success then run terraform apply
- Type Yes to continue
Note:- If an error occur regarding ami id then do validate the region in which the ami was created.
Linux EC2 terraform Script:-
terraform{
  Required_Providers {
   linux ec2 instance ={
   source = "hashicorp/linux ec2"
   version = "~>3.27
}
}
provider "linux" {
  profile = "jyoshna"
  region = "us-west-2"
  access_key = " "
  secret_key = " "
}
resource "linux_security_group " allow key to login"{
name = "devopsschool"
description = " allow key to login ec2 instance" 
}