├── .gitignore ├── terraform.tfvars ├── ec2.tf ├── variables.tf └── main.tf /.gitignore: -------------------------------------------------------------------------------- 1 | .terraform.lock.hcl 2 | .terraform/ 3 | -------------------------------------------------------------------------------- /terraform.tfvars: -------------------------------------------------------------------------------- 1 | # aws_access_key = "xxxxxx" 2 | # aws_secret_key = "yyyyyyy" 3 | aws_region = "us-east-1" 4 | vpc_cidr = "10.1.0.0/16" 5 | public_subnet1_cidr = "10.1.1.0/24" 6 | public_subnet2_cidr = "10.1.2.0/24" 7 | public_subnet3_cidr = "10.1.3.0/24" 8 | # private_subnet_cidr = "10.1.20.0/24" 9 | vpc_name = "terraform-aws-main" 10 | IGW_name = "terraform-aws-igw" 11 | public_subnet1_name = "Terraform_Public_Subnet1-main" 12 | public_subnet2_name = "Terraform_Public_Subnet2-main" 13 | public_subnet3_name = "Terraform_Public_Subnet3-main" 14 | # private_subnet_name = "Terraform_Private_Subnet-main" 15 | Main_Routing_Table = "Terraform_Main_table-main" 16 | key_name = "SecOps-Key" 17 | environment = "main" 18 | env = "main" 19 | -------------------------------------------------------------------------------- /ec2.tf: -------------------------------------------------------------------------------- 1 | # resource "aws_instance" "web-1" { 2 | # # ami = "${data.aws_ami.my_ami.id}" 3 | # ami = "ami-0866a3c8686eaeeba" 4 | # availability_zone = "us-east-1a" 5 | # instance_type = "t2.micro" 6 | # key_name = "SecOps-Key" 7 | # subnet_id = aws_subnet.subnet1-public.id 8 | # vpc_security_group_ids = ["${aws_security_group.allow_all.id}"] 9 | # associate_public_ip_address = true 10 | # tags = { 11 | # Name = "Server-1" 12 | # Env = "Prod" 13 | # Owner = "sai" 14 | # CostCenter = "ABCD" 15 | # } 16 | # user_data = <<-EOF 17 | # #!/bin/bash 18 | # sudo apt-get update 19 | # sudo apt-get install -y nginx 20 | # echo "

${var.env}-Server-1

" | sudo tee /var/www/html/index.html 21 | # sudo systemctl start nginx 22 | # sudo systemctl enable nginx 23 | # EOF 24 | # } -------------------------------------------------------------------------------- /variables.tf: -------------------------------------------------------------------------------- 1 | # variable "aws_access_key" {} 2 | # variable "aws_secret_key" {} 3 | variable "aws_region" {} 4 | variable "amis" { 5 | description = "AMIs by region" 6 | default = { 7 | us-east-1 = "ami-97785bed" # ubuntu 14.04 LTS 8 | us-east-2 = "ami-f63b1193" # ubuntu 14.04 LTS 9 | us-west-1 = "ami-824c4ee2" # ubuntu 14.04 LTS 10 | us-west-2 = "ami-f2d3638a" # ubuntu 14.04 LTS 11 | } 12 | } 13 | variable "vpc_cidr" {} 14 | variable "vpc_name" {} 15 | variable "IGW_name" {} 16 | variable "key_name" {} 17 | variable "public_subnet1_cidr" {} 18 | variable "public_subnet2_cidr" {} 19 | variable "public_subnet3_cidr" {} 20 | # variable "private_subnet_cidr" {} 21 | variable "public_subnet1_name" {} 22 | variable "public_subnet2_name" {} 23 | variable "public_subnet3_name" {} 24 | # variable "private_subnet_name" {} 25 | variable "Main_Routing_Table" {} 26 | variable "azs" { 27 | description = "Run the EC2 Instances in these Availability Zones" 28 | type = list(string) 29 | default = ["us-east-1a", "us-east-1b", "us-east-1c"] 30 | } 31 | variable "environment" { default = "dev" } 32 | variable "env" {} 33 | variable "instance_type" { 34 | type = map(string) 35 | default = { 36 | dev = "t2.nano" 37 | test = "t2.micro" 38 | prod = "t2.medium" 39 | } 40 | } 41 | 42 | 43 | -------------------------------------------------------------------------------- /main.tf: -------------------------------------------------------------------------------- 1 | #This Terraform Code Deploys Basic VPC Infra. 2 | provider "aws" { 3 | # access_key = "${var.aws_access_key}" 4 | # secret_key = "${var.aws_secret_key}" 5 | region = var.aws_region 6 | } 7 | 8 | terraform { 9 | backend "s3" { 10 | bucket = "workspacesbucket01" 11 | key = "workspace.statefile" 12 | region = "us-east-1" 13 | #dynamodb_table = "dynamodb-state-locking" 14 | } 15 | } 16 | 17 | 18 | resource "aws_vpc" "default" { 19 | cidr_block = var.vpc_cidr 20 | enable_dns_hostnames = true 21 | tags = { 22 | Name = "${var.vpc_name}" 23 | Owner = "Saikiran" 24 | } 25 | } 26 | 27 | resource "aws_internet_gateway" "default" { 28 | vpc_id = aws_vpc.default.id 29 | tags = { 30 | Name = "${var.IGW_name}" 31 | } 32 | } 33 | 34 | resource "aws_subnet" "subnet1-public" { 35 | vpc_id = aws_vpc.default.id 36 | cidr_block = var.public_subnet1_cidr 37 | availability_zone = "us-east-1a" 38 | 39 | tags = { 40 | Name = "${var.public_subnet1_name}" 41 | } 42 | } 43 | 44 | # resource "aws_subnet" "subnet2-public" { 45 | # vpc_id = aws_vpc.default.id 46 | # cidr_block = var.public_subnet2_cidr 47 | # availability_zone = "us-east-1b" 48 | 49 | # tags = { 50 | # Name = "${var.public_subnet2_name}" 51 | # } 52 | # } 53 | 54 | # resource "aws_subnet" "subnet3-public" { 55 | # vpc_id = aws_vpc.default.id 56 | # cidr_block = var.public_subnet3_cidr 57 | # availability_zone = "us-east-1c" 58 | 59 | # tags = { 60 | # Name = "${var.public_subnet3_name}" 61 | # } 62 | 63 | # } 64 | 65 | 66 | resource "aws_route_table" "terraform-public" { 67 | vpc_id = aws_vpc.default.id 68 | 69 | route { 70 | cidr_block = "0.0.0.0/0" 71 | gateway_id = aws_internet_gateway.default.id 72 | } 73 | 74 | tags = { 75 | Name = "${var.Main_Routing_Table}" 76 | } 77 | } 78 | 79 | resource "aws_route_table_association" "terraform-public" { 80 | subnet_id = aws_subnet.subnet1-public.id 81 | route_table_id = aws_route_table.terraform-public.id 82 | } 83 | 84 | resource "aws_security_group" "allow_all" { 85 | name = "allow_all" 86 | description = "Allow all inbound traffic" 87 | vpc_id = aws_vpc.default.id 88 | 89 | ingress { 90 | from_port = 0 91 | to_port = 0 92 | protocol = "-1" 93 | cidr_blocks = ["0.0.0.0/0"] 94 | } 95 | 96 | egress { 97 | from_port = 0 98 | to_port = 0 99 | protocol = "-1" 100 | cidr_blocks = ["0.0.0.0/0"] 101 | } 102 | } 103 | 104 | # data "aws_ami" "my_ami" { 105 | # most_recent = true 106 | # #name_regex = "^sai" 107 | # owners = ["232323232323232323"] 108 | # } 109 | 110 | 111 | # resource "aws_instance" "web-1" { 112 | # ami = "${data.aws_ami.my_ami.id}" 113 | # #ami = "ami-0d857ff0f5fc4e03b" 114 | # availability_zone = "us-east-1a" 115 | # instance_type = "t2.micro" 116 | # key_name = "LaptopKey" 117 | # subnet_id = "${aws_subnet.subnet1-public.id}" 118 | # vpc_security_group_ids = ["${aws_security_group.allow_all.id}"] 119 | # associate_public_ip_address = true 120 | # tags = { 121 | # Name = "Server-1" 122 | # Env = "Prod" 123 | # Owner = "sai" 124 | # CostCenter = "ABCD" 125 | # } 126 | # user_data = <<- EOF 127 | # #!/bin/bash 128 | # sudo apt-get update 129 | # sudo apt-get install -y nginx 130 | # echo "

${var.env}-Server-1

" | sudo tee /var/www/html/index.html 131 | # sudo systemctl start nginx 132 | # sudo systemctl enable nginx 133 | # EOF 134 | 135 | # } 136 | 137 | # resource "aws_dynamodb_table" "state_locking" { 138 | # hash_key = "LockID" 139 | # name = "dynamodb-state-locking" 140 | # attribute { 141 | # name = "LockID" 142 | # type = "S" 143 | # } 144 | # billing_mode = "PAY_PER_REQUEST" 145 | # } 146 | 147 | ##output "ami_id" { 148 | # value = "${data.aws_ami.my_ami.id}" 149 | #} 150 | #!/bin/bash 151 | # echo "Listing the files in the repo." 152 | # ls -al 153 | # echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++" 154 | # echo "Running Packer Now...!!" 155 | # packer build -var=aws_access_key=AAAAAAAAAAAAAAAAAA -var=aws_secret_key=BBBBBBBBBBBBB packer.json 156 | # echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++" 157 | # echo "Running Terraform Now...!!" 158 | # terraform init 159 | # terraform apply --var-file terraform.tfvars -var="aws_access_key=AAAAAAAAAAAAAAAAAA" -var="aws_secret_key=BBBBBBBBBBBBB" --auto-approve 160 | --------------------------------------------------------------------------------