Step 1: Create the main terraform config file - main.tf
Go to your terraform work space....and launch vscode
Step 2: Get the Code Block for The Provider Section
Go to https://registry.terraform.io/ and Select Browse Provider
Step 4: Copy the code block skeleton: See below and paste in your main.tf file
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
}Step 5: Lets get the config options: Click on documentation nd scroll down to usage example:
So our code will now look like below:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
region = "us-east-2"
access_key = "ur access key"
secret_key = "ur secret key"
}
Step 7: Now let us add a default tag to our code. Scroll down on the page to default tag usage and copy the code(pls modify as required)
See code to copy below, Add it below secret key
default_tags {
tags = {
Environment = "Test"
Name = "Provider Tag"
}
}it will look like below:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
region = "us-east-2"
access_key = "AKetetettetetettetwwuquuququq"
secret_key = "wtwtetetett2tt22266262wfwffwf"
default_tags {
tags = {
Environment = "Dev"
Name = "aws_dev"
}
}
}
This takes care of our connection to Aws. The next thing will be to create a resource. To do this you have to browse the available resource for aws
So our code will look like this:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
region = "us-east-2"
access_key = "Axccxcxcxcxccxcxcxccxcxc"
secret_key = "pxxcxcxcxccxvxvvx"
default_tags {
tags = {
Environment = "Dev"
Name = "aws_dev"
}
}
}
resource "aws_instance" "web" {
}
Now we have the resource block ready, now its time to inject the config variables for the instance resource
Go to modules and select the resource you want. we want to create and ec2 instance so we will select a module for that
Step 8: Go to registry: https://registry.terraform.io/ ....Browse Modules
In the search type ec2 and look for the module for creating an ec2 instance, Scroll to find it under modules
Scroll Down and copy the below block and add to your code
Your code will now look like below
Pls note the ff variables arent required
- name not required
- source - not required
- version -not required
Our new code will look like below
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
region = "us-east-2"
access_key = "Axccxcxcxcxccxcxcxccxcxc"
secret_key = "pxxcxcxcxccxvxvvx"
default_tags {
tags = {
Environment = "Dev"
Name = "aws_dev"
}
}
}
resource "aws_instance""myec2-instance" {
ami = "ami-ebd02392"
instance_type = "t2.micro"
key_name = "Augustkey"
vpc_security_group_ids = ["sg-12345678"]
tags = {
Terraform = "true"
Environment = "Dev"
Name = "My_ec2 instance"
}
}
Now modify the vpc_security_group_ids so that we will use the default security group
vpc_security_group_ids = [aws_security_group.ec2_sg.id]
Our code will now look like below:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
region = "us-east-2"
access_key = "xcxcxcxcvxvxbxbbxbxbx"
secret_key = "sggsgsgsgsggsgsgsggs"
default_tags {
tags = {
Environment = "Dev"
Name = "aws_dev"
}
}
}
resource "ec2_instance""single-instance" {
ami = "ami-ebd02392"
instance_type = "t2.micro"
key_name = "Augustkey"
vpc_security_group_ids = [aws_security_group.ec2_sg.id]
tags = {
Terraform = "true"
Environment = "Dev"
Name = "My_ec2 instance"
}
}
Now to Add Security Group resource
Copy the code and add at the bottom of the script. we will modify to suit our enviroment
Modify the ingress port to suit your env, the egress doesnt need to be changed
vpc_id: is optional
Our code will now look like:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.4.0"
}
}
}
provider "aws" {
# Configuration options
region = "us-east-2"
access_key = "xcxcxcxcvxvxbxbbxbxbx"
secret_key = "sggsgsgsgsggsgsgsggs"
default_tags {
tags = {
Environment = "Dev"
Name = "aws_dev"
}
}
}
resource "ec2_instance""single-instance" {
ami = "ami-ebd02392"
instance_type = "t2.micro"
key_name = "Augustkey"
vpc_security_group_ids = [aws_security_group.ec2_sg.id]
tags = {
Terraform = "true"
Environment = "Dev"
Name = "My_ec2 instance"
}
}
resource "aws_security_group" "ec2_sg" {
name = "ec2-dev-sg"
description = "EC2 SG"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["10.0.0.0/8"]
}
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["10.0.0.0/8"]
}
#Allow all outbound
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "ec2-dev-sg"
}
}
Now we have all the code blocks to create our env. Save
in your terminal enter
$terraform init
$terraform plan
$terraform apply
No comments:
Post a Comment