├── .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 |
--------------------------------------------------------------------------------