This repository contains 5 beginner-to-intermediate DevOps projects designed to help you build a job-winning portfolio. Each project is organized in its own folder with step-by-step implementation instructions.
⚠️ Note: For this project, I'll be demonstrating using Azure Cloud. However, if you're an AWS user, you can find the corresponding code files for AWS in the repository and follow along with those instead by using the implementation steps in the README.md files under each AWS project folder.
Tools: Terraform, Azure CLI, Azure Container Instances
- Install Azure CLI and Terraform
- Create a free Azure account
- Login to Azure using
az login - Clone this repo and go to
project-1-infrastructure - Copy and edit
terraform.tfvarswith your config (e.g., resource group name and location) - Run
terraform initto initialize - Run
terraform planto preview - Run
terraform applyto deploy - Get public IP from
terraform outputand test in browser or viacurl - Destroy resources using
terraform destroy
Tools: GitHub Actions, Node.js, Docker, Azure Container Registry
- Install Node.js and Docker Desktop
- Clone this repo and go to
project-2-cicd-pipeline - Run
npm installandnpm startto test locally - Build Docker image with
docker build -t my-webapp . - Push code to GitHub repository
- Run
azure_setup.shto create ACR and service principal - Add required secrets to GitHub Actions:
AZURE_CREDENTIALS,ACR_NAME, etc. - Trigger workflow by pushing code to main branch
- Get public URL from GitHub Actions or Azure CLI
- Modify and push again to see auto-deployment
- Clean up Azure resources with
az group delete
Tools: Kubernetes (Docker Desktop or Minikube), kubectl
- Enable Kubernetes via Docker Desktop or install Minikube
- Install
kubectl - Build Docker image for the app
- Navigate to
project-3-kubernetesand applyk8s/app.yaml - Wait for pods to be ready
- Access the app via
minikube service, port-forwarding, or localhost - Test scaling, self-healing by deleting pods
- Clean up with
kubectl delete -f k8s/app.yaml
Tools: Docker Compose, Prometheus, Grafana
- Navigate to
project-4-monitoring - Run
docker-compose up -dto start monitoring stack - Visit Prometheus at
http://localhost:9090 - Visit Grafana at
http://localhost:3000(admin/admin) - Add Prometheus as data source in Grafana
- Create basic dashboards or import from grafana.com (e.g., ID 1860)
- Monitor Node.js app from project 2
- Set up alerts in Grafana
- Stop monitoring stack using
docker-compose down
Tools: Terraform Modules, Azure CLI
- Navigate to
project-5-multi-environment - Explore the folder structure:
modules/andenvironments/dev&environments/prod - Go to
environments/devand runterraform init→apply - Add outputs to module to expose public IP/URL if not already present
- Access the app via browser or
curl - Repeat same steps for
environments/prod - Verify isolation by changing container image in dev only
- Practice shared updates by adding variables to the module
- Destroy both environments using
terraform destroy
Each project folder includes its own README.md with tailored instructions and configs.
Be sure to:
- Customize the
.tfvars,.yml, or YAML files to fit your use case
Happy building! 🚀