deep-mm / CSC519-DevOps

This is final project for DevOps Pipeline using GitHub Actions and Ansible for CSC-519.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DevOps Project Overview

"From Code Chaos to Deployment Symphony"

Software products rely on two main pillars: Development and Operations. In the past, these pillars had separate roles and worked in isolation. DevOps is the key to bridging this gap by making the developer who creates the feature also responsible for deploying it to production. This approach has proven to be very effective and popular in the industry and has been adopted by many large software companies.

The aim of this project is to design and implement DevOps automation using tools like GitHub Actions and Ansible, which enable developers to deliver their features with confidence and efficiency.

Deliverables

  1. Project Proposal
  2. Status Report 1
  3. Status Report 2
  4. Final Report

Pipeline Design

High Level Pipeline

Deployment

Demo Video

https://media.github.ncsu.edu/user/26488/files/13035c98-db45-4ca0-9fb6-e985997730c4

Work Done

Coffee Project

Ansible Playbooks

  • setup-docker.yml - This is responsible for setting up the infrastructure in the vcl, i.e. required packages and docker

  • deploy-application.yml - This is responsible for pulling the docker image from GitHub packages and deploying it onto the host

  • open-port.yml - This is responsible for opening up port 3000 so that the website is accessible over the internet.

  • comment_nginx.yml - The playbook updates the NGINX configuration on the load balancer used by the blue-green deployment as well as rollback by commenting out a specific server line with the target IP and then restarting the NGINX service.

  • uncomment_nginx.yml - This reverts the NGINX configuration by uncommenting the server line in the NGINX default file.

  • deploy-nginx.yml - This configures the vcl as an NGINX web server, exposes the port 80, restarts the server.

  • deploy-production.yml - This orchestrates the deployment process for a production server, first removing it from the NGINX configuration, setting up Docker, deploying an application, opening a port, and then adding the production server back to the NGINX configuration.

  • hosts.yml - Inventory file with a list of IP addresses of all environments.

Actions (Set-variable)

  • Variables: This folder contains all the variable json files that are used in the workflows.

  • set-variables.yml: This action is responsible for setting up the variables for the workflows. It takes the input as the environment name and sets up the variables for that environment.

Workflows

  • Build and Publish: This workflow builds aplications, perofrms unit testing, linting checks and uploades docker image to public github container registery.
  • deploy.yml: This is the main deployment workflow that is responsible for invoking templates and deploying app to different environments.
  • deploy-template.yml: This is a template workflow which plays an important role in ensuring consistent deployment across environments.
  • rollback.yml: This workflow allows to deploy a previous stable docker image directly to production environment in case of emergencies when the new features might have caused issues in production environment.

Mentors

  • Prof. John-Paul Ore (jwore)
  • Md Rayhanur Rahman (mrahman)

Team Members

  • Ameya Vaichalkar (agvaicha)
  • Deep Mehta (dmmehta2)
  • Subodh Gujar (sgujar)

License

This project is licensed under the MIT License.

About

This is final project for DevOps Pipeline using GitHub Actions and Ansible for CSC-519.

License:MIT License


Languages

Language:Python 48.4%Language:JavaScript 47.6%Language:HTML 2.9%Language:Dockerfile 1.1%