Thanks to visit codestin.com
Credit goes to github.com

Skip to content

georgeonalo/rentzone-github-actions-terraform-ecs-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rentzone GitHub Actions Terraform ECS Project

In this cap stone project, i deployed a dynamic car rental web application called Rentzone in AWS using CI/CD pipelines and GitHub Actions.

Project reference architecture

GitHub Action CI_CD project

Summary of Jobs built in my pipeline to complete this project.

A Build is triggered in my pipeline when a git commit is pushed into my github repository, and below are the different jobs that is built in the pipeline.

(1) Configure AWS credentials; The first job configure AWS credentials for GitHub Actions to access and create resources in my AWS account.

(2) Build AWS infrastructure with terraform; The second job deploys infrastructure in AWS using Terraform and creates a VPC with public and private subnets, internet gateway, security groups, nat gateways, application load balancer, Rds instance, IAM role, S3 bucket, Record set in Route 53, Request and ssl certificate to encrypt data in transit, ECS cluster, ECS task defination and ECS service in auto scaling groups.

(3) Start self-hosted EC2 runner; After building the infrastructure in AWS, the next job in my pipeline starts a self-hosted runner and Create Amazon ECR repository to store the docker image for my application

(4) Build and push Docker image into ECR; The fourth job setup Docker on the self-hosted runner and build the image for my application and push the image to the Amazon ECR repository

(5) Create environment file and export to s3; The next job export environment variables for the fargate containers into a file and copy the file into the s3 bucket

(6) Migrate data into RDS database with Flyway; Parallel to the Job above, another job uses flyway to migrate the sql script for the application into Rds database

(7) Stop self-hosted EC2 runner; The next job terminates the self-hosted runner.

(8) Create new task definition revision; The eight job creates a new ECS task defination revison

(9) Restart ECS Fargate service; The last job in the pipeline uses the new revision of the ECS task defination to update the ECS service making the application available to end users

This project covers all the crucial skills and experiences required by a Cloud/DevOps Engineer.

In this project, i demonsrated my proficiency in:

  1. Deploying dynamic web applications in AWS using CI/CD pipelines and GitHub Actions

  2. Utilizing core AWS services such as;

    • VPC with public and private subnets
    • Internet Gateway
    • Security Groups
    • Nat Gateway
    • Application Load Balancer
    • ECS Fargate
    • ECR
    • Route 53
    • Auto Scaling Groups and more.
  3. Containerizing applications with Docker and pushing the image to registries like Amazon ECR.

  4. Building applications in AWS using infrastrucure as code tools like, TERRAFORM.

  5. Migrating data for dynamic applications into RDS with tools like Flyway.

  6. And finally, this project showcases my ability to secure and manage secrets with credential management tools like;

    • AWS secrete manager and
    • GitHub Actions repository secrets.

In summary, this project highlights my expertise with cloud service providers like: AWS and my familiarity with DevOps tools and processes such as;

  • CI/CD pipelines
  • GitHub Actions
  • Linux
  • Terraform
  • Docker
  • Git
  • GitHub
  • Bash Scripting
  • AWS CLI
  • Flyway
  • and Visual Studio Code

Below are screenshots of some of the infrastructure deployed by my pipeline

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

Repository for GitHub Actions Project

About

Repository for GitHub Actions Project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published