A hands-on, end-to-end DevOps learning repo — covering Shell Scripting, Docker, Kubernetes, CI/CD, ArgoCD, Terraform, Nginx, Linux, Git and real-world mega projects
| # | Section | Description |
|---|---|---|
| 1 | 🐚 Shell Scripting for DevOps | Bash scripting from basics to real-world automation |
| 2 | 🐋 Docker | Dockerfiles, Compose, and command references |
| 3 | ☸️ Kubernetes (k8s) | Docs, manifests, and local cluster setup |
| 4 | ☸️ Kubernetes in One Shot | Complete hands-on Kubernetes reference with YAMLs |
| 5 | 🔄 CI/CD | GitHub Actions, Jenkins pipelines, and workflows |
| 6 | 🔁 ArgoCD Demos | GitOps patterns: declarative, app-of-apps, image updater |
| 7 | 🔁 ArgoCD Practice | Hands-on ArgoCD application manifests |
| 8 | 🏗️ Terraform for DevOps | Terraform IaC examples from basics to EKS |
| 9 | 🌐 Nginx | Web server config, reverse proxy, SSL |
| 10 | 🐧 Linux | Bash commands, permissions, networking |
| 11 | 📁 Git | Git CLI guide and branching strategies |
| 12 | 🛒 Retail Store Sample App | Full GitOps project on AWS EKS Auto Mode |
| 13 | 🌍 Wanderlust Mega Project | End-to-end DevSecOps + GitOps MERN deployment |
| 14 | 📚 Learning Resources | Curated external resources for each topic |
Folder:
Shell-Scripting-For-DevOps/A complete guide to Bash shell scripting for DevOps engineers — from writing your first script to automating cloud infrastructure. Organized by day-wise practice sessions and batch scripts.
| File / Folder | Description |
|---|---|
| README.md | Full curriculum: intro → intermediate → advanced → real-world projects |
day01/ |
|
| day01/hello.sh | First shell script — printing and variables |
day02/ |
|
| day02/for_loop.sh | for loops in Bash |
| day02/while_loop.sh | while loops in Bash |
| day02/create_user.sh | Script to create a Linux user |
| day02/check_if_jetha_loyal.sh | Conditional statements example |
| day02/jetha_lal_ki_duniya.sh | Fun functions and logic demo |
day03/ |
|
| day03/error_handle.sh | Error handling with set -e, trap |
| day03/deploy_django_app.sh | Automate Django app deployment |
| day03/create_ec2.sh | Provision AWS EC2 using AWS CLI |
day04/ |
|
| day04/create_ec2.sh | Advanced EC2 creation script |
batch-10-scripts/ |
|
| batch-10-scripts/hello.sh | Hello world script |
| batch-10-scripts/functions.sh | Functions in shell scripting |
| batch-10-scripts/for_loops.sh | For loop patterns |
| batch-10-scripts/create_user.sh | Create user from script |
| batch-10-scripts/add_user_from_function.sh | User creation using functions |
| batch-10-scripts/error_handling.sh | Robust error handling patterns |
| batch-10-scripts/install_packages.sh | Automate package installation |
| batch-10-scripts/system_details.sh | Print system info (CPU, RAM, disk) |
| batch-10-scripts/create_simple_file.sh | File creation automation |
| batch-10-scripts/if_file_exists.sh | File existence check |
log-files/ |
Sample log files for parsing practice |
| log-files/app.log | Application log sample |
| log-files/application.log | Extended application log |
| log-files/july-29-warning-logs.log | Warning-level log sample |
| log-files/zookeeper.log | ZooKeeper log for parsing practice |
Folder:
docker/Comprehensive documentation on writing Dockerfiles, using Docker Compose, and mastering Docker CLI commands. Each guide includes best practices, real examples, and security tips.
| File | Description |
|---|---|
| docker/dockerfile-guide.md | Writing Dockerfiles — basic to multi-stage, security, optimization |
| docker/compose-guide.md | Docker Compose — services, volumes, networks, env variables |
| docker/commands-guide.md | Complete Docker CLI reference — containers, images, networks, volumes |
Folder:
k8s/Structured Kubernetes documentation covering pods, deployments, services, storage, and local development setup. Also contains self-exploration YAML manifests for hands-on practice.
| File | Description |
|---|---|
| k8s/docs/local-development-setup.md | Install kubectl, kind, minikube; create local clusters |
| k8s/docs/pods.md | Pod concepts, lifecycle, and YAML spec |
| k8s/docs/pods-and-deployments.md | Deployment strategies, ReplicaSets, rollouts |
| k8s/docs/Deployment.md | In-depth Deployment resource guide |
| k8s/docs/kubernetes-services.md | ClusterIP, NodePort, LoadBalancer, Headless services |
| k8s/docs/storage-and-persistence.md | PV, PVC, StorageClass, cloud provider storage |
| k8s/docs/manifest.md | Writing and structuring Kubernetes manifests |
| k8s/docs/end-end.md | End-to-end deployment walkthrough |
| File | Description |
|---|---|
| k8s/self-explore/cluster.yml | Kind cluster config |
| k8s/self-explore/manifest.yml | General manifest practice |
| k8s/self-explore/deployment.yml | Sample Deployment |
| k8s/self-explore/rs.yml | ReplicaSet definition |
| k8s/self-explore/svc.yml | Service definition |
Folder:
kubernetes-in-one-shot/A comprehensive, categorized collection of
kubectlcommands and real YAML manifests covering every major Kubernetes topic — from core workloads to RBAC, Helm, monitoring, and custom resource definitions (CRDs). Ideal for interview prep and hands-on learning.
| File / Folder | Description |
|---|---|
| README.md | Complete kubectl command reference by topic |
nginx/ |
Nginx workloads on Kubernetes |
| nginx/pod.yml | Basic nginx Pod |
| nginx/deployment.yml | Nginx Deployment |
| nginx/replicasets.yml | Nginx ReplicaSet |
| nginx/service.yml | Nginx Service |
| nginx/namespace.yml | Namespace for nginx |
| nginx/ingress.yml | Ingress resource |
| nginx/daemonsets.yml | DaemonSet example |
| nginx/job.yml | Kubernetes Job |
| nginx/cron-job.yml | CronJob example |
| nginx/persistentVolume.yml | PersistentVolume |
| nginx/persistentVolumeClaim.yml | PersistentVolumeClaim |
apache/ |
Apache workloads with autoscaling and RBAC |
| apache/deployment.yml | Apache Deployment |
| apache/service.yml | Apache Service |
| apache/namespace.yml | Namespace |
| apache/hpa.yml | Horizontal Pod Autoscaler |
| apache/vpa.yml | Vertical Pod Autoscaler |
| apache/role.yml | RBAC Role |
| apache/role-binding.yml | RBAC RoleBinding |
| apache/service-account.yml | ServiceAccount |
mysql/ |
MySQL StatefulSet with Secrets and ConfigMaps |
| mysql/statefulset.yml | MySQL StatefulSet |
| mysql/service.yml | MySQL Service |
| mysql/namespace.yml | Namespace |
| mysql/configMap.yml | ConfigMap |
| mysql/secrets.yml | Kubernetes Secret |
| mysql/vpa.yml | Vertical Pod Autoscaler |
pods/ |
Special pod patterns |
| pods/init-container.yml | Init container pattern |
| pods/sidecar-container.yml | Sidecar container pattern |
crd/ |
Custom Resource Definitions |
| crd/devops-crd.yml | Custom Resource Definition |
| crd/devops-cr.yml | Custom Resource instance |
| crd/devops-cr2.yml | Second CR instance |
dashboard/ |
|
| dashboard/dashboard-admin-user.yml | K8s Dashboard admin user |
helm/ |
Helm chart packages |
| helm/get_helm.sh | Helm installation script |
| helm/apache-helm-0.1.0.tgz | Packaged Apache Helm chart |
| helm/node-js-app-0.1.0.tgz | Packaged Node.js Helm chart |
monitoring/ |
|
| monitoring/get_helm.sh | Install Prometheus + Grafana stack |
django-notes-app/ |
Full Django app with Docker + Jenkins + K8s |
| django-notes-app/Dockerfile | Django app Dockerfile |
| django-notes-app/Jenkinsfile | Jenkins CI pipeline |
| django-notes-app/docker-compose.yml | Docker Compose for local dev |
| django-notes-app/README.md | Project README |
Folder:
ci-cd/Documentation covering the two most popular CI/CD platforms — GitHub Actions and Jenkins — along with general workflow best practices. Includes real pipeline examples, secrets management, and deployment strategies.
| File | Description |
|---|---|
| ci-cd/github-actions.md | Workflow syntax, triggers, jobs, secrets, example workflows |
| ci-cd/jenkins.md | Jenkinsfile syntax, declarative pipelines, plugins, security |
| ci-cd/workflows.md | Development pipeline patterns, testing strategy, release management |
Folder:
argocd-demos/Practical demonstrations of ArgoCD GitOps patterns used in production environments. Covers multiple deployment approaches — from CLI to declarative to advanced patterns like App of Apps, ApplicationSets, Image Updater, and multi-cluster deployments.
| File / Folder | Description |
|---|---|
| README.md | Setup guide: install kind, kubectl, ArgoCD CLI, access UI |
cli_approach/ |
Deploy apps using the ArgoCD CLI |
| cli_approach/apache/apache_deployment.yml | Apache Deployment via CLI |
| cli_approach/apache/apache_svc.yml | Apache Service |
declarative_approach/ |
Deploy apps using ArgoCD Application CRDs |
| declarative_approach/online_shop/online_shop_app.yml | ArgoCD Application manifest |
| declarative_approach/online_shop/online_shop_deployment.yml | Online shop Deployment |
| declarative_approach/online_shop/online_shop_svc.yml | Online shop Service |
app_of_apps/ |
App of Apps pattern — manage multiple apps with one root app |
| app_of_apps/apps/apache_app.yml | Apache child app |
| app_of_apps/apps/nginx_app.yml | Nginx child app |
| app_of_apps/apps/online_shop_app.yml | Online shop child app |
applicationsets/ |
ApplicationSets — dynamically generate ArgoCD apps |
| applicationsets/chai-app/deployment.yml | Chai app Deployment |
| applicationsets/chai-app/service.yml | Chai app Service |
| applicationsets/chai-app/secret.yml | Chai app Secret |
git_generator/ |
Generate apps from Git directory structure |
| git_generator/apache/apache_deployment.yml | Apache Deployment for Git generator |
| git_generator/chai-app/deployment.yml | Chai app Deployment |
| git_generator/online-shop/deployment.yml | Online shop Deployment |
image_updater/ |
Automatically update image tags in Git using ArgoCD Image Updater |
| image_updater/chai-app/deployment.yml | Deployment with image updater annotations |
| image_updater/chai-app/kustomization.yml | Kustomize config for image updates |
multicluster/ |
Deploy to multiple Kubernetes clusters |
| multicluster/online-shop/deployment.yml | Multi-cluster deployment |
monitoring/ |
Observability apps managed by ArgoCD |
| monitoring/chai-app/deployment.yml | Monitoring app Deployment |
| monitoring/online_shop/online_shop_deployment.yml | Online shop monitoring Deployment |
ui_approach/ |
Deploy apps from the ArgoCD Web UI |
| ui_approach/nginx/nginx_deployment.yml | Nginx Deployment via UI |
| ui_approach/nginx/nginx_svc.yml | Nginx Service |
Folder:
argocd-practice/Hands-on YAML manifests for practicing ArgoCD deployments, including a real-world Slotify application with a database backend, ingress, and secrets.
| File / Folder | Description |
|---|---|
| argocd-practice/deployment.yaml | Sample Deployment for practice |
| argocd-practice/service.yaml | Sample Service |
| argocd-practice/online-shop.yaml | Online shop ArgoCD Application CRD |
slotify-app/ |
Full app stack: backend + Postgres DB |
| slotify-app/deployment.yaml | Slotify app Deployment |
| slotify-app/Service.yaml | Slotify Service |
| slotify-app/ingress.yaml | Ingress resource |
| slotify-app/postgres-deployment.yaml | PostgreSQL Deployment |
| slotify-app/postgres-service.yaml | PostgreSQL Service |
| slotify-app/ConfigMapsecrets.yaml | ConfigMap and secrets config |
| slotify-app/secrets.yaml | Kubernetes Secrets |
Folder:
terraform-for-devops/A hands-on Terraform repository covering everything from basic AWS resource provisioning to advanced features (modules, EKS clusters, lifecycle rules, import blocks, test framework). Perfect for DevOps engineers learning Infrastructure as Code on AWS.
| File / Folder | Description |
|---|---|
| README.md | Full guide: commands, structure, learning map |
| terraform.tf | Provider config and version constraints |
| variables.tf | Input variables with validation |
| ec2.tf | EC2 instance, security group, key pair |
| s3.tf | S3 bucket with versioning and encryption |
| dynamodb.tf | DynamoDB table |
| outputs.tf | Output values |
| script.sh | EC2 user_data bootstrap script |
eks/ |
EKS cluster using Terraform EKS module v21.x |
| eks/eks.tf | EKS cluster with managed node groups |
| eks/vpc.tf | VPC module for EKS networking |
| eks/provider.tf | Provider and locals |
| eks/outputs.tf | EKS outputs |
| eks/README.md | EKS module guide |
aws_module_project/ |
Reusable Terraform modules (dev/stg/prd) |
| aws_module_project/main.tf | Module composition for multiple envs |
| aws_module_project/providers.tf | AWS provider |
| aws_module_project/terraform.tf | Version constraints |
examples/ |
Modern Terraform features (1.5+) |
| examples/for_each.tf | for_each and dynamic blocks |
| examples/validation.tf | Variable validation blocks |
| examples/lifecycle.tf | lifecycle meta-arguments |
| examples/moved.tf | moved blocks for safe refactoring |
| examples/import.tf | import blocks (Terraform 1.5+) |
| examples/check.tf | check blocks for continuous assertions |
| examples/removed.tf | removed blocks for safe deletion |
| examples/README.md | Examples guide |
Folder:
nginx/Documentation for configuring Nginx as a web server and reverse proxy. Covers SSL termination, load balancing, caching, security headers, and WebSocket proxying.
| File | Description |
|---|---|
| nginx/basic-config.md | Server blocks, location blocks, SSL, performance, security headers, logging |
| nginx/reverse-proxy.md | Reverse proxy setup, load balancing, SSL termination, caching, WebSocket |
Folder:
linux/Essential Linux knowledge for DevOps engineers. Covers day-to-day Bash commands, file permission management, and network troubleshooting — all from a practical DevOps perspective.
| File | Description |
|---|---|
| linux/bash-commands.md | System monitoring, file management, networking, package management, users, services |
| linux/file-permissions.md | Permission types, ownership, special permissions, ACLs, security best practices |
| linux/networking-basics.md | Interface config, routing, firewall rules, DNS, troubleshooting |
Folder:
git/A concise Git CLI reference covering the commands and workflows every DevOps engineer uses daily — from basic operations to advanced branching, rebase, and automation-friendly patterns.
| File | Description |
|---|---|
| git/git-cli.md | Basic commands, branching strategy, merge vs rebase, advanced operations, best practices |
Folder:
retail-store-sample-app/A production-grade GitOps project demonstrating how to deploy a full microservices retail application on AWS EKS Auto Mode using Terraform, ArgoCD, GitHub Actions and Helm. Features dual-branch strategy (public vs production/GitOps branch) and includes complete Terraform IaC.
Tech Stack: AWS EKS Auto Mode · ArgoCD · Terraform · GitHub Actions · NGINX Ingress · Cert-Manager · Helm
| File / Folder | Description |
|---|---|
| README.md | Full deployment guide: prerequisites, Terraform, ArgoCD, GitOps |
| BRANCHING_STRATEGY.md | Dual-branch (public vs GitOps) strategy explained |
terraform/ |
Full IaC for EKS + ArgoCD + VPC |
| terraform/main.tf | Core infrastructure: VPC, EKS, node groups |
| terraform/argocd.tf | ArgoCD installation via Terraform |
| terraform/addons.tf | EKS add-ons: NGINX Ingress, Cert-Manager |
| terraform/variables.tf | Configurable input variables |
| terraform/outputs.tf | Terraform outputs |
| terraform/security.tf | Security groups and IAM roles |
| terraform/locals.tf | Local values |
| terraform/versions.tf | Provider version constraints |
| terraform/README.md | Terraform module documentation |
Folder:
Wanderlust-Mega-Project/An end-to-end DevSecOps + GitOps project deploying a full MERN stack travel blog application on AWS EKS. Integrates Jenkins CI, SonarQube, OWASP dependency check, Trivy, ArgoCD CD, Redis caching, and Prometheus + Grafana monitoring.
Tech Stack: GitHub · Docker · Jenkins · SonarQube · OWASP · Trivy · ArgoCD · Redis · AWS EKS · Helm · Prometheus · Grafana
| File / Folder | Description |
|---|---|
| README.md | Complete project setup: Jenkins, EKS, ArgoCD, monitoring |
| Jenkinsfile | Main CI pipeline (build, scan, push) |
| docker-compose.yml | Local dev stack: frontend + backend + Redis + MongoDB |
| package.json | Root package config |
backend/ |
Node.js Express API |
| backend/server.js | Express server entry point |
| backend/Dockerfile | Backend Docker image |
| backend/.env.sample | Environment variable template |
frontend/ |
React + Vite + Tailwind UI |
| frontend/Dockerfile | Frontend Docker image |
| frontend/vite.config.ts | Vite build config |
database/ |
|
| database/Dockerfile | MongoDB Docker image |
kubernetes/ |
Kubernetes manifests for EKS deployment |
| kubernetes/backend.yaml | Backend Deployment + Service |
| kubernetes/frontend.yaml | Frontend Deployment + Service |
| kubernetes/mongodb.yaml | MongoDB StatefulSet + Service |
| kubernetes/redis.yaml | Redis Deployment |
| kubernetes/persistentVolume.yaml | PersistentVolume for MongoDB |
| kubernetes/persistentVolumeClaim.yaml | PVC for MongoDB |
| kubernetes/README.md | Kubernetes deployment guide |
| kubernetes/kubeadm.md | Kubeadm cluster setup notes |
GitOps/ |
|
| GitOps/Jenkinsfile | GitOps CD pipeline (update image tags in Git) |
Automations/ |
|
| Automations/updatebackendnew.sh | Script to update backend image tag |
| Automations/updatefrontendnew.sh | Script to update frontend image tag |
| Assets/README.md | Project assets and diagrams |
A curated list of high-quality free resources for each topic in this repository.
- 📖 Bash Scripting Cheatsheet — Quick reference for syntax, loops, and conditionals
- 📖 The Linux Command Line (free PDF) — Full book on Bash and the command line
- 🎥 Shell Scripting Tutorial for Beginners – freeCodeCamp — 5-hour hands-on course
- 📖 ShellCheck — Linter for finding bugs in shell scripts
- 📖 Official Docker Docs — Official reference and guides
- 🎥 Docker Tutorial for Beginners – TechWorld with Nana — Full crash course
- 📖 Docker Best Practices (docs.docker.com) — Official Dockerfile best practices
- 🎮 Play with Docker — Free browser-based Docker playground
- 📖 Official Kubernetes Docs — Reference docs and tutorials
- 🎥 Kubernetes Tutorial for Beginners – TechWorld with Nana — Most popular K8s intro (4 hours)
- 📖 Kubernetes the Hard Way (Kelsey Hightower) — Deep-dive bootstrap guide
- 🎮 Killercoda Kubernetes Scenarios — Free interactive K8s practice
- 📖 kubestarter — Starter templates referenced in this repo
- 📖 GitHub Actions Docs — Official workflow reference
- 🎥 GitHub Actions CI/CD – TechWorld with Nana — Complete GitHub Actions tutorial
- 📖 Jenkins Docs — Official Jenkins pipeline reference
- 🎥 Jenkins Full Course – Edureka — Jenkins beginner to advanced
- 📖 ArgoCD Official Docs — Concepts, API reference, RBAC
- 🎥 ArgoCD Tutorial – TechWorld with Nana — Best GitOps intro video
- 📖 GitOps Principles (OpenGitOps) — GitOps core principles
- 📖 ArgoCD ApplicationSets Docs — Advanced app generation
- 📖 Terraform Official Docs — HCL reference and guides
- 🎥 Terraform Full Course – freeCodeCamp — 2-hour beginner course
- 📖 Terraform Best Practices — Community best practice guide
- 🎮 Terraform playground on KillerCoda — Browser-based Terraform practice
- 📖 Nginx Official Docs — Full directive and module reference
- 📖 Nginx Beginner's Guide — Official getting started guide
- 🎥 Nginx Crash Course – Traversy Media — Quick setup and config tutorial
- 📖 Linux Journey — Interactive, free Linux learning platform
- 📖 OverTheWire: Bandit — Gamified Linux command practice
- 🎥 Linux for Beginners – freeCodeCamp — Full Linux tutorial
- 📖 TLDR Pages — Simplified man pages for common commands
- 📖 Pro Git Book (free) — The definitive Git reference
- 🎮 Learn Git Branching — Interactive visual Git tutorial
- 📖 GitHub Flow Guide — Simple branching workflow
- 🎥 Git & GitHub Crash Course – Traversy Media — Practical Git tutorial
- 📖 AWS Documentation — Official service docs
- 🎥 AWS Certified Cloud Practitioner – freeCodeCamp — 14-hour full course
- 🎮 AWS Free Tier — Practice on real AWS services for free
- 📖 roadmap.sh/devops — The most popular DevOps learning roadmap
- 📖 90DaysOfDevOps — Structured 90-day DevOps learning plan
devops-learning/
├── Shell-Scripting-For-DevOps/ # Start here for scripting basics
├── linux/ # Linux fundamentals
├── git/ # Git CLI guide
├── docker/ # Containerization docs
├── k8s/ # Kubernetes docs + manifests
├── kubernetes-in-one-shot/ # Full K8s hands-on reference
├── ci-cd/ # GitHub Actions + Jenkins
├── argocd-demos/ # GitOps patterns (ArgoCD)
├── argocd-practice/ # ArgoCD YAML practice
├── terraform-for-devops/ # Infrastructure as Code
├── nginx/ # Web server + reverse proxy
├── retail-store-sample-app/ # Real-world EKS GitOps project
└── Wanderlust-Mega-Project/ # End-to-end DevSecOps project
- Foundations →
linux/→git/→Shell-Scripting-For-DevOps/ - Containers →
docker/ - Orchestration →
k8s/→kubernetes-in-one-shot/ - CI/CD →
ci-cd/ - GitOps →
argocd-demos/→argocd-practice/ - IaC →
terraform-for-devops/ - Web Server →
nginx/ - Real Projects →
retail-store-sample-app/→Wanderlust-Mega-Project/
Contributions are always welcome! Here's how you can help:
- Report Issues — Open a GitHub issue for bugs, outdated content, or suggestions
- Improve Docs — Submit a PR to fix typos, add examples, or improve explanations
- Add Scripts — Add new shell scripts, manifests, or Terraform configs
- Add Resources — Know a great tutorial or guide? Add it to the Resources section
Please ensure your contributions follow the existing folder structure and naming conventions.
This repository is available under the MIT License. See the LICENSE file for details.
⭐ If this repo helped you, please give it a star! ⭐