0% found this document useful (0 votes)
15 views21 pages

Devopscube Com Devops Projects

This document presents a curated list of practical DevOps projects aimed at enhancing learning and hands-on experience with various DevOps tools and concepts. It highlights the importance of real-world projects for aspiring DevOps engineers, providing a range of project ideas from setting up static websites to deploying scalable applications on AWS. Additionally, it offers resources such as a GitHub repository for project code and emphasizes the growing demand for skilled DevOps professionals in the market.

Uploaded by

hoangguruu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views21 pages

Devopscube Com Devops Projects

This document presents a curated list of practical DevOps projects aimed at enhancing learning and hands-on experience with various DevOps tools and concepts. It highlights the importance of real-world projects for aspiring DevOps engineers, providing a range of project ideas from setting up static websites to deploying scalable applications on AWS. Additionally, it offers resources such as a GitHub repository for project code and emphasizes the growing demand for skilled DevOps professionals in the market.

Uploaded by

hoangguruu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

 

D — DEVOPS

Best DevOps Projects For


Practical Learning
by Bibin Wilson · November 22, 2023

This blog is for you if you are looking for the best devops projects for learning and
practice. It contains a curated list of real-world devops project scenarios that will
help you learn the concepts and well as gain experience with DevOps tools.

As per alliedmarketresearch, the Devops market is projected to reach $57.90 billion


by 2030, registering a CAGR of 24.2% from 2021 to 2030. So, organizations need
DevOps engineers with hands-on knowledge, and you need to demonstrate those
skills

The best way to show your skillsets is by working on real-world devops projects.

All the projects listed in this blog based on real-world learning to gain hands-on
experience. It includes the following.

1 Project Architecture

2 Project Workflow

3 Full Infrastructure source code in GitHub

4 Project Documentation

All of these DevOps projects are structured to provide practical learning


opportunities based on my 10+ years of experience working as a cloud and DevOps
engineer.

Note: It is a growing list.

DevOps Projects Github Repository


All the code for the projects listed in this guide is present in the Github DevOps
projects repository. It contains all the CLI commands, configuration management
codes, IaC codes, and much more. You can clone the repo using the following
command.

git clone https://github.com/techiescamp/devops-projects

List of DevOps Projects For Learning


If you are a fresh graduate or an experienced person looking to start your DevOps
journey, it is very important to learn the basics. The following set of projects will help
you learn some of the core IT fundamentals and DevOps real-world to help you
prepare for DevOps engineer interviews.

Note: You dont need to spend any money for the labs for theses
projects. You can use vagrant based VMs locally or use $1000+ free
cloud credits on AWS, Google Cloud, Digital Ocean, Linode, Vultur etc

LIST OF DEVOPS PROJECTS

1 Project 1: Setup a Static Website Using Nginx


2 Project 2: Setup Multiple Static Websites on a Single Server Using Nginx Virtual
Hosts
3 Project 3: Setup Load Balancing for Static Website Using Nignx
4 Project 4: Setup WordPress Website Using LAMP Stack
5 Project 5: Setup Service Discovery Using Nginx & Consul
6 Project 6: Create an API Based Application
7 Project 7: Design a AWS VPC Based on Application Architecture.
8 Project 8: Deploy Scalable Java Application on AWS Cloud
9 Project 9: One-Way and Mutual SSL/TLS Implementation
10 Project 10: Setup Client to Site VPN on AWS
11 Project 11: Deploy Prometheus Stack Using Docker Compose

Project 1: Setup a Static Website Using


Nginx
This project aims to help you learn to set up a static website using Nginx and
configure DNS to make the website publicly accessible.

Project Tasks Key Concepts Covered

1. Buy a domain name from a domain 1. DNS


Registrar 2. Linux
2. Spin up a Ubuntu server. 3. Webserver
3. SSH into the server and install Nginx 4. Nginx
4. Download freely available HTML website 5. Dig command
files. 5. SSL (Letsencrypt)
5. Using SCP, copy the website files to the 6. OpenSSL command.
Nginx website directory.
6. Validate the website using the server IP
address.
7. In your DNS account, create an A record
and add the Elastic IP.
8. Use the dig command to verify the DNS
records.
9. Using DNS verify the website setup.
10. Create a Letsencryp certificate for the
DNS and configure it on the Nginx server.
11. Validate the website SSL using the
OpenSSL utility.

Optionally you can try using a self-signed SSL certificate to understand the difference
between self-signed and trusted SSL certificates.

Project 2: Setup Multiple Static Websites


on a Single Server Using Nginx Virtual
Hosts
In this project, you will learn the concept of subdomains and hosting multiple
websites on a single server using Nginx Virtual Host configuration.

Project Tasks Key Concepts Covered

1. Create two subdomains 1. Subdomains


2. Install and configure Nignx on a server 2. Nginx Virtual Hosts routing.
3. Create two website directories with two 3. Wildcard SSL (Letsencrypt)
different website templates.
4. Configure the Virtual host to point two
subdomains to two different website
directories.
5. Add the IP of the server as A record to the
two subdomains.
6. Validate the setup accessing the
subdomains.
7. Create a wildcard Letsencrypt SSL
certificate for the root Domain.
8. Configure wildcard SSL on Nginx for two
websites.
9. Validate the subdomain websites’ SSL
using OpenSSL utility.

Project 3: Setup Load Balancing for Static


Website Using Nignx
This project aims to learn Layer 7 load balancing and load balancing algorithms using
Nginx as a Load Balancer.

Project Tasks key Concepts Covered

1. Deploy three servers 1. Load balancing


2. Set up static websites on two servers 2. Load balancing algorithms
using Nginx. Make a small change in the 4. L7 Load balancing
Project Tasks key Concepts Covered

index.html file of one of the websites to


differentiate between two servers.
3. Set up Nginx on the third server. It will act
as a load balancer.
4. Configure Nginx to load and balance
traffic between two static websites.
5. Add the Nginx Load balancer IP to the
DNS A record.
6. Try accessing the website. Every time you
reload the website you should see a
different index.html.
7. Try different Nginx load-balancing
algorithms and options.
8. Understand L7 load balancing.

Project 4: Setup WordPress Website


Using LAMP Stack
The aim of this project is to learn about Dynamic websites that use Databases. Here
you will learn to work with a Relational Database, apache web server, and PHP
language.

Project Tasks Key Concepts Covered

1. Deploy a Ubuntu server 1. Basic Database setup and administration.


2. Set up the LAMP stack on the server. 2. Setting up open-source PHP application.
3. Configure WordPress Application
4. Map the IP address to the DNS A record.
5. Access the DNS and validate the
WordPress website setup.

DevOps basics can be learned by setting up a simple WordPress blog for yourself as
shown in the following architecture.
You can gain practical experience with the following:

1 DNS records: A, CNAME, MX, TXT, and more.

2 Content Delivery Network: Cloudflare.

3 Web Server Configuration: Apache.

4 Reverse Proxy Configuration: Nginx.

5 Application configurations: WordPress (PHP).

6 Database Management: MySQL.

7 SMTP Settings: for email delivery.

8 Server/Data Backup: WordPress Backup, MySQL Backup.

9 Custom Domain Email: Zoho Mail.

Here’s what it will cost you:

A Domain Name – you can get it for very cheap from Godaddy (~$1)

Everything else is free. You can then use the blog to publish your learnings.

Project 5: Setup Service Discovery Using


Nginx & Consul
Service discovery is an important concept every DevOps Engineer should learn. It is
the concept of discovering service information in real time. It involves a centralized
service registry that maintains information about available services

Service discovery is of two types

1 ✅ 𝗖𝗹𝗶𝗲𝗻𝘁 𝗦𝗶𝗱𝗲 𝗦𝗲𝗿𝘃𝗶𝗰𝗲 𝗗𝗶𝘀𝗰𝗼𝘃𝗲𝗿𝘆: In this model, the request goes to a


service registry to get the information available for backend services. For
example, an application connects to a service registry to get information
about the database endpoint.

2 ✅ 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗦𝗲𝗿𝘃𝗶𝗰𝗲 𝗗𝗶𝘀𝗰𝗼𝘃𝗲𝗿𝘆: In this model, the request goes to a


load balancer and the load balancer uses the service registry to get the
information of the backend servers. The example is shown in the image.

If you implement this project, it will serve as a solid foundation for all the service
discovery-based implementations on both VM and container-based implementations.

To understand service discovery practically, here is what you can do.

1 Setup Hashicorp Consul (Service registry)

2 Setup Nginx load balancer with consul agent to query the consul server
(Service registry)
3 Configure the nginx.conf as a consul template (Go template) to retrieve
backend IPs/Configs in real-time from the service registry.

4 Set up backend servers for the load balancer and update the IPs to the
service registry.

5 Validate the setup by checking if the load balancer is able to serve the
traffic by reading backend information from the service registry.

6 If you change/update any backend info on the service registry, the consul
agent running on the load balancer identifies it and updates the info in the
nginx.conf file.

𝗡𝗼𝘁𝗲: This is just a short and practical workflow to understand service discovery. In
real projects, more automation is involved in the registry update and retrieval
process.

Project 6: Create an API Based


Application
Programming is a requirement for DevOps engineers now. Be it for implementations
or interviews, it is a must-have knowledge. One way to develop an interest in
learning programming is by developing sample web applications. During each
module completion, you will have a sense of satisfaction, and your confidence level to
learn programming will improve.

My suggestion would be to develop an API-based application using Python Flask or


FastAPI to practically understand REST APIs, database connection configuration, and a
little bit of UI (HTML & Javascript)

Project 7: Design a AWS VPC Based on


Application Architecture.
Every DevOps engineer should have a good understanding of cloud networking. In
most organizations, the VPC is managed by the central network team. However,
DevOps engineers need to work with those teams to create the required networks for
projects by providing all the network details.

The best way to learn cloud networking is by designing and implementing it


practically.

In this project you will use a sample application infrastructure architecture to design a
AWS VPC with standard best practices that includes most of the AWS VPC concepts.

Project Tasks Key Concepts Covered

1. Understand VPC Requirements Creating VPC design based on application


2. VPC Network Design infrastructure architecture
3. Subnet Design
4. VPC Documentation
5. Route Table Design
6. AWS VPC Topology
7. Network ACLs
8. VPC Endpoints

Project Documentation: Design AWS VPC

Project 8: Deploy Scalable Java


Application on AWS Cloud
In this project, you will learn to build and deploy a Java application on the AWS
platform.

Project Code: Scalable Java Application on AWS Code


Project Tasks Key Concepts Covered

1. Build a Java application 1. Java application


2. Use Packer & Ansible to build the AMI With application code, build.
cloudwatch agent for application logging, prometheus JMX 2. Immutable
exporter for application metrics, and consul agent to register infrastructure model for
service information. java application
3. Use Terraform to provision MySQL RDS instance and to store 3. AWS cloudwatch
the MySQL username and password in the AWS secrets manager custom logging
4. Provision Load Balancer 4. AWS Autoscaling
5. Provision Autoscaling Group with Launch template that uses 5. AWS Loadbalancer
AMI built by packer and attaches it to Loadbalancer. 6. AWS secrets
6. In the ec2 user data use the boto3 script to retrieve the RDS manager.
password in realtime that could be used by the application. 7. IaC using Packer,
7. Verify the application by accessing it using the Load Balancer Terraform and Ansible.
endpoint. 8. Consul for service
8. Verify application logs in Cloudwatch discovery
9. Verify application metrics in Prometheus. 9. Prometheus for
10. Test application autoscaling application monitoring
11. Creating monitoring dashboards on Cloudwatch.

Here is the high-level application architecture.


Project 9: One-Way and Mutual SSL/TLS
Implementation
The Idea of this project is to learn the concepts of oneway and mutual SSL/TLS
implementations.

For practical learning, you can start with One Way SSL

Only the server must have a digital certificate in One-way SSL to establish a secure
connection.

1 Deploy an Nginx website over a valid domain name.

2 Next, you can set up Let’s Encrypt SSL, a certificate authority that provides
free SSL/TLS certificates.

3 You can also set up a wildcard domain and configure Let’s Encrypt to
understand wildcard DNS and SSL.

Another concept to learn is Mutual TLS, which is common in most distributed


systems. For example, Kubernetes components interact via mTLS.

Also, you will encounter this concept in server mesh implementations.

mTLS (Mutual TLS) is a security protocol that allows both client and server to
authenticate each other using certificates. To learn Mutual TLS, you can generate
client and server certificates using OpenSSL.

Next, you can create a simple Python Flask API that requires SSL and a client program
that makes a request to the Flask API using its certificates.

Finally, you can verify that the request succeeds and that the client and server
exchange SSL/TLS certificates.

Project 10: Setup Client to Site VPN on


AWS
Most devops engineers work in cloud environments. One of the key requirements in
such environments is VPN connectivity to access the cloud resources securely.
Organizations typically use site-to-site VPN connectivity. However, for learning
purposes, we can set up a client-to-site VPN on AWS and understand all the key
concepts involved.

We have created a mini project to learn the client-to-site VPN setup.

Project Documentation: AWS Client VPN Endpoint Setup

Project 11: Deploy Prometheus Stack


Using Docker Compose
The idea of this project its to put your Docker knowledge in to a hands on project.

The project aims at implementing the following concepts.

1 Infrastructure as Code using Terraform

2 Multi-Container Deployments using Docker Compose

3 Monitoring & Alerting using Prometheus Stack


You will learn the following from the project.

1 Provision an ec2 server using well-structured Terraform code.

2 Deploy prometheus, Alert Manager, Node Exporter, and Grafana as Docker


containers using Docker Compose.

3 The project also makes use of Shell script and Makefile.

Project Documentation: Setup Prometheus Stack & Grafana Using Docker

Upcoming List
Details and breakdowns for the following projects will be added soon.

1 Complete Docker Image Build Pipeline

2 Implement Forward Proxy on Cloud using Squid Proxy.

3 Secret Management With Hashicorp Vault

4 Terraform With AWS

5 Kubernetes the Hard Way on AWS

6 End-to-end application Deployment on Kubernetes

7 GtiOps With ArgoCD on Kubernetes

8 Entire CI/CD setup for application deployments on Kubernetes

Need for Devops Real World Projects


One of the problems faced by aspiring devops engineers is a lack of hands-on
knowledge doing DevOps projects. Often, it becomes a big hurdle in getting a
DevOps engineer role or moving into a different domain in DevOps itself. You can
overcome this issue by working on real-time projects.

Devops real-time projects help you gain experience with DevOps tools, infrastructure
design, and troubleshooting. Moreover while working on projects, you will be able to
apply and gain an understanding of Linux, scripting, and other fundamental devops
concepts. This way you can confidently attend DevOps interviews.

I have segregated the projects into different categories in terms of beginner, IAC,
cloud, and containers. Based on your experience level and understanding of the tool
you can pick the projects.

Conclusion
The best way to learn DevOps is by doing practical projects. The idea is to understand
the core fundamentals of each implementation. Even though the implementation
could differ from organization to organization, the best underlying concepts,
workflows and best practices remain almost the same.

In DevOps interviews, companies expect real-time project experience with tools.


However, if you have strong knowledge of the tools, even without project experience,
they might consider you.

Also, this blog will be constantly updated with more project workflows for real-time
learning and production scenarios.

Subscribe To Newsletter
Newletters Will be Sent From techiescamp.com
Your email address Subscribe

Bibin Wilson
Bibin Wilson is a cloud and DevOps consultant with over 10 years of IT experience. He has
extensive hands-on experience with public cloud platforms, cloud hosting, Kubernetes and
OpenShift deployments in production. He has authored over 300 tech tutorials, providing
valuable insights to the DevOps community. His courses on techiescamp.com offer
practical guidance and real-world examples for professionals aiming to excel in cloud,
DevOps, and infrastructure automation.

   

VIEW COMMENTS (8) 

YOU MAY ALSO LIKE

D — DEVOPS

Git Basics Every


Developer and
Administrator Should
Know
by devopscube · October 20, 2019

Version control systems are repositories used to


version your code/scripts collaboratively with the
advantages of tracking changes as…
D — DEVOPS

What is DevOps? What


Does it Really Mean?
by Bibin Wilson · April 8, 2020

This article explains what DevOps is and what


DevOps really means, and how automation tools
can help teams…

D — DISTRIBUTED SYSTEMS

List of Best Open


Source Service
Discovery Tools
by devopscube · July 22, 2023

In this blog, we will look at the best service


discovery tools that are open source. With
evolving…

D — DEVOPS

Understanding
Continuous
Integration, Delivery
and Deployment
by devopscube · November 3, 2016

Continuous Integration (CI), Continuous Delivery


and Continuous Deployment (CD) have become a
part of the daily life for…

L — LATEST

Kibana Dashboard
Tutorial for Beginners:
Comprehensive Guide
by devopscube · January 25, 2022

In this Kibana dashboard tutorial, we will look at the


important Kibana concepts involved in the creation
of…

D — DEVOPS

Learning CI/CD Tools:


Best Practices for
Application and IaC
by devopscube · August 11, 2023

I will share insights on learning CI/CD tools and


implementing best practices in this blog. For
DevOps Engineers,…
TRENDING THIS WEEK

Kubernetes And DevOps Job


Market in 2025

How to Migrate Kubernetes


Ingress to Gateway API?

Best Kubernetes Certifications


for 2025 [Ranked]

Pass the CKA Certification Exam:


The Ultimate Study Guide

How to Create AWS VPC Using


Terraform

DevopsCube
©devopscube 2022. All rights reserved.

Privacy Policy About Site Map Disclaimer Contribute Advertise Archives

   

You might also like