Skip to content

AnirudhBadoni/ProjectOne

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Infrastructure Deployment using IaC and CI/CD Pipeline Implementation

Overview

This project is a proof of concept commissioned by a client to demonstrate the ability to build a scalable and secure infrastructure using Infrastructure as Code (IaC) practices on AWS/Azure and establish a robust DevOps pipeline for building and deploying a Java application. The project is divided into three main parts: creating a base Amazon Machine Image (AMI) using Packer, containerizing a Java application and implementing a CI/CD pipeline, and deploying the infrastructure using Terraform.

Features:

  1. Support multibranch pipeline
  2. Have Public, private and secure subnets.
  3. Have a Different Name for each docker image based on the commit branch and the commit ID for better discovery of the correct docker image.

Project Breakdown:

The project is divided into three parts. Please refer to the links of the project for a more detail explanation.

Part 1 Part 2 Part 3

Part 1: Creation of a Base AMI using Packer

Objective: Build a base AMI with the required software pre-installed.
Tools: Packer, AWS/Azure
Software to be Installed:

  1. CloudWatch Agent
  2. AWS SSM Agent
  3. Docker
  4. Git Client Provisioning: Use shell script for provisioning.
    CI Tool: Any CI tool of choice (e.g., Jenkins, GitHub Actions) to build the Packer pipeline.

Part 2: Containerizing a Java Application and Implementing a CI/CD Pipeline

Objective: Build and containerize a Java application, scan the code, and push the container to a repository.
Tools: GitLab, Azure DevOps, Jenkins, GitHub Actions, JFrog Artifactory, SonarCloud
Steps:

  1. Containerize the application using Docker.
  2. Implement a CI/CD pipeline to build the application and produce a container image.
  3. Scan the code and Docker files using SonarCloud.
  4. Push the container image to JFrog Artifactory.

Part 3: Deploying Infrastructure Using Terraform

Objective: Deploy a secure, scalable infrastructure.
Tools: Terraform, AWS/Azure
Infrastructure Components:

  1. VPC with Public, Private, and Secure subnets
  2. Load Balancer in Public Subnet
  3. Auto Scaling Group in Private Subnet
  4. RDS Cluster in Secure Subnet Best Practices:
  5. Store state in S3/Azure Blob with cross-region replication and encryption.
  6. Enable state locking using DynamoDB.
  7. Use the GitOps approach for Terraform to apply on merge to the main branch.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published