terraform added

This commit is contained in:
nagarjuna 2023-03-16 17:00:28 +05:30
parent 471030e976
commit ddc636a943
8 changed files with 289 additions and 0 deletions

20
spring-petclinic.service Normal file
View file

@ -0,0 +1,20 @@
[Unit]
Description=springpetclinic java application
[Service]
User=ansible
# The configuration file application.properties should be here:
#change this to your workspace
WorkingDirectory=/home/ansible/
#path to executable.
#executable is a bash script which calls jar file
ExecStart=/usr/bin/java -jar spring-petclinic-2.7.3.jar
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

10
terraforminfra/data.tf Normal file
View file

@ -0,0 +1,10 @@
data "aws_key_pair" "mykey" {
filter {
name = "key-name"
values = ["newkey"]
}
}

12
terraforminfra/dev.tfvars Normal file
View file

@ -0,0 +1,12 @@
myregion = "ap-south-1"
my_vpc = "192.168.0.0/16"
myvpctag = "myvpctag"
mypubsubnet = "192.168.0.0/24"
publicsubnettag = "publicsubnettag"
myintgwtag = "myintgwtag"
mycidr_block = "0.0.0.0/0"
instance_type = "t2.large"
ami_id = "ami-0f8ca728008ff5af4"

View file

@ -0,0 +1,91 @@
resource "aws_instance" "jenkin" {
ami = var.ami_id
associate_public_ip_address = true
instance_type = var.instance_type
key_name = data.aws_key_pair.mykey.key_name
vpc_security_group_ids = [aws_security_group.myrsgroup.id]
subnet_id = aws_subnet.my_subnet.id
availability_zone = "ap-south-1a"
tags = {
"Name" = "jenkins"
}
}
resource "null_resource" "jenkinnull" {
triggers = {
cluster_instance_ids = 1.2
}
connection {
type = "ssh"
user = "ubuntu"
host = aws_instance.jenkin.public_ip
private_key = file("~/.ssh/id_rsa")
}
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install openjdk-11-jdk -y",
"sudo apt-get install git -y",
"sudo apt-get install wget -y",
"sudo apt install curl -y",
"sleep 2m",
"curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null",
"echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null",
"sudo apt install jenkins -y",
"sudo apt-get update",
]
}
}
resource "aws_instance" "node1" {
ami = var.ami_id
associate_public_ip_address = true
instance_type = var.instance_type
key_name = data.aws_key_pair.mykey.key_name
vpc_security_group_ids = [aws_security_group.myrsgroup.id]
subnet_id = aws_subnet.my_subnet.id
availability_zone = "ap-south-1a"
tags = {
"Name" = "node1"
}
}
resource "null_resource" "node1null" {
triggers = {
cluster_instance_ids = 1.2
}
connection {
type = "ssh"
user = "ubuntu"
host = aws_instance.node1.public_ip
private_key = file("~/.ssh/id_rsa")
}
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install openjdk-11-jdk -y",
"sudo apt-get install git -y",
"sudo apt-get install wget -y",
"sudo apt install curl -y",
"sudo apt install maven -y",
"sudo apt install software-properties-common -y",
"sudo add-apt-repository --yes --update ppa:ansible/ansible",
"sudo apt install ansible -y",
"sudo apt-get update",
]
}
}

58
terraforminfra/network.tf Normal file
View file

@ -0,0 +1,58 @@
resource "aws_vpc" "myvpc" {
cidr_block = var.my_vpc
instance_tenancy = "default"
tags = {
Name = var.myvpctag
}
}
resource "aws_subnet" "my_subnet" {
vpc_id = aws_vpc.myvpc.id
cidr_block = var.mypubsubnet
availability_zone = "ap-south-1a"
tags = {
Name = var.publicsubnettag
}
}
resource "aws_internet_gateway" "myintgw" {
vpc_id = aws_vpc.myvpc.id
tags = {
Name = var.myintgwtag
}
}
resource "aws_route_table" "mypubroute" {
vpc_id = aws_vpc.myvpc.id
route {
cidr_block = var.mycidr_block
gateway_id = aws_internet_gateway.myintgw.id
}
tags = {
Name = "pubroutetag"
}
}
resource "aws_route_table_association" "pubassociation" {
subnet_id = aws_subnet.my_subnet.id
route_table_id = aws_route_table.mypubroute.id
}
resource "aws_network_interface" "mynetworkinterface" {
subnet_id = aws_subnet.my_subnet.id
tags = {
Name = "public_network_interface"
}
}

View file

@ -0,0 +1,13 @@
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
# Configure the AWS Provider
provider "aws" {
region = var.myregion
}

View file

@ -0,0 +1,42 @@
resource "aws_security_group" "myrsgroup" {
name = "myresourcegroup"
vpc_id = aws_vpc.myvpc.id
ingress {
description = "myVPC"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "myVPC"
from_port = 8080
to_port = 8080
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
description = "myVPC"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
tags = {
Name = "myresourcegrouptag"
}
}

View file

@ -0,0 +1,43 @@
variable "myregion" {
type = string
default = "ap-south-1"
}
variable "my_vpc" {
type = string
}
variable "myvpctag" {
type = string
}
variable "mypubsubnet" {
type = string
}
variable "publicsubnettag" {
type = string
}
variable "myintgwtag" {
type = string
}
variable "mycidr_block" {
type = string
}
variable "resource_version" {
type = string
default = "1.0"
}
variable "instance_type" {
type = string
}
variable "ami_id" {
type = string
}