An open API service indexing awesome lists of open source software.

https://github.com/miqdadprojects/kodekloud-eng-100-days-devops

A comprehensive collection of hands-on tasks and projects completed during the KodeKloud eng 100 Days of DevOps challenge. This repository covers practical skills in Linux, Docker, Ansible, Git, Kubernetes, AWS, Grafana, CI/CD pipelines, and more, aimed at mastering DevOps tools and practices.
https://github.com/miqdadprojects/kodekloud-eng-100-days-devops

100-days-of-devops ansible aws ci-cd devops docker grafana kodekloud-engineer kubernetes linux mariadb terraform

Last synced: 10 months ago
JSON representation

A comprehensive collection of hands-on tasks and projects completed during the KodeKloud eng 100 Days of DevOps challenge. This repository covers practical skills in Linux, Docker, Ansible, Git, Kubernetes, AWS, Grafana, CI/CD pipelines, and more, aimed at mastering DevOps tools and practices.

Awesome Lists containing this project

README

          

# πŸš€ KodeKloud Eng 100 Days of DevOps Challenge

![DevOps Banner](https://img.shields.io/badge/DevOps-100%20Days%20Challenge-blue?style=for-the-badge&logo=devops)
![Progress](https://img.shields.io/badge/Progress-Day%201--100-green?style=for-the-badge)
![KodeKloud](https://img.shields.io/badge/Platform-KodeKloud-orange?style=for-the-badge&logo=kubernetes)

*Mastering DevOps Tools and Practices Through Hands-On Experience*

---

## πŸ“– About This Repository

Welcome to my **100 Days of DevOps** journey! This repository documents my comprehensive learning experience through the KodeKloud Eng challenge, featuring real-world tasks and projects that build practical DevOps expertise.

**🎯 Mission**: Transform theoretical knowledge into practical skills through daily hands-on challenges covering the entire DevOps ecosystem.

**⏱️ Timeline**: This project spans **100 consecutive days**, with each day featuring new challenges, tools, and learning experiences.

---

## πŸ› οΈ Technologies & Tools Covered

### **System Administration & Infrastructure**
![Linux](https://img.shields.io/badge/Linux-FCC624?style=flat-square&logo=linux&logoColor=black)
![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=flat-square&logo=ubuntu&logoColor=white)
![CentOS](https://img.shields.io/badge/CentOS-262577?style=flat-square&logo=centos&logoColor=white)

### **Containerization & Orchestration**
![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)
![Kubernetes](https://img.shields.io/badge/Kubernetes-326CE5?style=flat-square&logo=kubernetes&logoColor=white)
![Helm](https://img.shields.io/badge/Helm-0F1689?style=flat-square&logo=helm&logoColor=white)

### **Configuration Management & Automation**
![Ansible](https://img.shields.io/badge/Ansible-EE0000?style=flat-square&logo=ansible&logoColor=white)
![Terraform](https://img.shields.io/badge/Terraform-623CE4?style=flat-square&logo=terraform&logoColor=white)
![Puppet](https://img.shields.io/badge/Puppet-FFAE1A?style=flat-square&logo=puppet&logoColor=black)

### **Cloud Platforms**
![AWS](https://img.shields.io/badge/AWS-232F3E?style=flat-square&logo=amazon-aws&logoColor=white)
![Azure](https://img.shields.io/badge/Azure-0089D0?style=flat-square&logo=microsoft-azure&logoColor=white)
![GCP](https://img.shields.io/badge/GCP-4285F4?style=flat-square&logo=google-cloud&logoColor=white)

### **CI/CD & Version Control**
![Git](https://img.shields.io/badge/Git-F05032?style=flat-square&logo=git&logoColor=white)
![GitHub](https://img.shields.io/badge/GitHub-181717?style=flat-square&logo=github&logoColor=white)
![Jenkins](https://img.shields.io/badge/Jenkins-D24939?style=flat-square&logo=jenkins&logoColor=white)
![GitLab](https://img.shields.io/badge/GitLab-FCA326?style=flat-square&logo=gitlab&logoColor=black)

### **Monitoring & Observability**
![Grafana](https://img.shields.io/badge/Grafana-F46800?style=flat-square&logo=grafana&logoColor=white)
![Prometheus](https://img.shields.io/badge/Prometheus-E6522C?style=flat-square&logo=prometheus&logoColor=white)
![ELK Stack](https://img.shields.io/badge/ELK%20Stack-005571?style=flat-square&logo=elastic&logoColor=white)

---

## πŸ“… Journey Structure

### **Daily Progression Format**
Each day follows a structured learning approach:

- **🎯 Daily Objective**: Clear learning goals and outcomes
- **πŸ“‹ Task Description**: Real-world scenario and requirements
- **βš™οΈ Implementation**: Step-by-step solution with commands
- **βœ… Verification**: Testing and validation procedures
- **πŸ“ Learning Notes**: Key takeaways and best practices
- **πŸ”— Resources**: Helpful links and documentation

### **Weekly Themes**
| Week | Focus Area | Days | Key Technologies |
|------|------------|------|------------------|
| 1-3 | **Linux & System Administration** | 1-20 | Linux, Shell Scripting, Web Servers, Databases |
| 4-5 | **Version Control & Git** | 21-34 | Git, Repository Management, Branching, Workflows |
| 6-7 | **Docker & Containerization** | 35-47 | Docker, Images, Containers, Networks, Compose |
| 8-10 | **Kubernetes Orchestration** | 48-67 | Pods, Deployments, Volumes, Services, Applications |
| 11-12 | **Jenkins & CI/CD** | 68-81 | Jenkins Setup, Pipelines, Builds, Automation |
| 13-14 | **Ansible Automation** | 82-93 | Playbooks, Modules, Configuration Management |
| 15 | **Terraform & AWS Cloud** | 94-100 | Infrastructure as Code, VPC, EC2, IAM, CloudWatch |

### **Complete 100-Day Breakdown**

#### **🐧 Linux & System Administration (Days 1-20)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 1 | Linux User Setup with Non-Interactive Shell | User Management |
| 2 | Temporary User Setup with Expiry | Account Security |
| 3 | Secure Root SSH Access | SSH Security |
| 4 | Script Execution Permissions | File Permissions |
| 5 | SELinux Installation and Configuration | Security Policies |
| 6 | Create a Cron Job | Task Scheduling |
| 7 | Linux SSH Authentication | Key-based Auth |
| 8 | Install Ansible | Automation Tools |
| 9 | MariaDB Troubleshooting | Database Admin |
| 10 | Linux Bash Scripts | Shell Scripting |
| 11 | Install and Configure Tomcat Server | Application Servers |
| 12 | Linux Network Services | Network Configuration |
| 13 | IPtables Installation And Configuration | Firewall Management |
| 14 | Linux Process Troubleshooting | System Monitoring |
| 15 | Setup SSL for Nginx | Web Server Security |
| 16 | Install and Configure Nginx as an LBR | Load Balancing |
| 17 | Install and Configure PostgreSQL | Database Management |
| 18 | Configure LAMP server | Web Stack |
| 19 | Install and Configure Web Application | Application Deployment |
| 20 | Configure Nginx + PHP-FPM Using Unix Sock | Web Performance |

#### **πŸ”„ Version Control & Git (Days 21-34)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 21 | Set Up Git Repository on Storage Server | Repository Setup |
| 22 | Clone Git Repository on Storage Server | Repository Management |
| 23 | Fork a Git Repository | Collaboration |
| 24 | Git Create Branches | Branch Management |
| 25 | Git Merge Branches | Code Integration |
| 26 | Git Manage Remotes | Remote Repositories |
| 27 | Git Revert Some Changes | Change Management |
| 28 | Git Cherry Pick | Selective Merging |
| 29 | Manage Git Pull Requests | Code Review |
| 30 | Git Hard Reset | History Management |
| 31 | Git Stash | Temporary Storage |
| 32 | Git Rebase | History Rewriting |
| 33 | Resolve Git Merge Conflicts | Conflict Resolution |
| 34 | Git Hook | Automation Triggers |

#### **🐳 Docker & Containerization (Days 35-47)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 35 | Install Docker Packages and Start Docker Service | Docker Setup |
| 36 | Deploy Nginx Container on Application Server | Container Deployment |
| 37 | Copy File to Docker Container | File Management |
| 38 | Pull Docker Image | Image Management |
| 39 | Create a Docker Image From Container | Image Creation |
| 40 | Docker EXEC Operations | Container Interaction |
| 41 | Write a Docker File | Image Building |
| 42 | Create a Docker Network | Network Configuration |
| 43 | Docker Ports Mapping | Port Management |
| 44 | Write a Docker Compose File | Multi-container Apps |
| 45 | Resolve Dockerfile Issues | Troubleshooting |
| 46 | Deploy an App on Docker Containers | Application Deployment |
| 47 | Docker Python App | Language-specific Containers |

#### **☸️ Kubernetes Orchestration (Days 48-67)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 48 | Deploy Pods in Kubernetes Cluster | Pod Management |
| 49 | Deploy Applications with Kubernetes Deployments | Deployment Strategies |
| 50 | Set Resource Limits in Kubernetes Pods | Resource Management |
| 51 | Execute Rolling Updates in Kubernetes | Update Strategies |
| 52 | Revert Deployment to Previous Version in Kubernetes | Rollback Procedures |
| 53 | Resolve VolumeMounts Issue in Kubernetes | Storage Troubleshooting |
| 54 | Kubernetes Shared Volumes | Volume Management |
| 55 | Kubernetes Sidecar Containers | Container Patterns |
| 56 | Deploy Nginx Web Server on Kubernetes Cluster | Web Server Deployment |
| 57 | Print Environment Variables | Configuration Management |
| 58 | Deploy Grafana on Kubernetes Cluster | Monitoring Deployment |
| 59 | Troubleshoot Deployment issues in Kubernetes | Debugging |
| 60 | Persistent Volumes in Kubernetes | Storage Solutions |
| 61 | Init Containers in Kubernetes | Initialization Patterns |
| 62 | Manage Secrets in Kubernetes | Security Management |
| 63 | Deploy Iron Gallery App on Kubernetes | Application Deployment |
| 64 | Fix Python App Deployed on Kubernetes Cluster | Application Debugging |
| 65 | Deploy Redis Deployment on Kubernetes | Database Deployment |
| 66 | Deploy MySQL on Kubernetes | Database Management |
| 67 | Deploy Guest Book App on Kubernetes | Full-stack Application |

#### **πŸ”§ Jenkins & CI/CD (Days 68-81)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 68 | Set Up Jenkins Server | CI/CD Setup |
| 69 | Install Jenkins Plugins | Plugin Management |
| 70 | Configure Jenkins User Access | Access Control |
| 71 | Configure Jenkins Job for Package Installation | Job Configuration |
| 72 | Jenkins Parameterized Builds | Build Customization |
| 73 | Jenkins Scheduled Jobs | Automated Scheduling |
| 74 | Jenkins Database Backup Job | Backup Automation |
| 75 | Jenkins Slave Nodes | Distributed Builds |
| 76 | Jenkins Project Security | Security Configuration |
| 77 | Jenkins Deploy Pipeline | Deployment Automation |
| 78 | Jenkins Conditional Pipeline | Conditional Logic |
| 79 | Jenkins Deployment Job | Application Deployment |
| 80 | Jenkins Chained Builds | Build Dependencies |
| 81 | Jenkins Multistage Pipeline | Pipeline Architecture |

#### **πŸ”§ Ansible Automation (Days 82-93)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 82 | Create Ansible Inventory for App Server Testing | Inventory Management |
| 83 | Troubleshoot and Create Ansible Playbook | Playbook Development |
| 84 | Copy Data to App Servers using Ansible | File Management |
| 85 | Create Files on App Servers using Ansible | File Operations |
| 86 | Ansible Ping Module Usage | Module Basics |
| 87 | Ansible Install Package | Package Management |
| 88 | Ansible Blockinfile Module | File Modification |
| 89 | Ansible Manage Services | Service Management |
| 90 | Managing ACLs Using Ansible | Permission Management |
| 91 | Ansible Lineinfile Module | Line-level Editing |
| 92 | Managing Jinja2 Templates Using Ansible | Template Management |
| 93 | Using Ansible Conditionals | Conditional Logic |

#### **☁️ Terraform & AWS (Days 94-100)**
| Day | Topic | Focus Area |
|-----|-------|------------|
| 94 | Create VPC Using Terraform | Network Infrastructure |
| 95 | Create Security Group Using Terraform | Security Configuration |
| 96 | Create EC2 Instance Using Terraform | Compute Resources |
| 97 | Create IAM Policy Using Terraform | Identity Management |
| 98 | Launch EC2 in Private VPC Subnet Using Terraform | Private Infrastructure |
| 99 | Attach IAM Policy for DynamoDB Access Using Terraform | Database Access |
| 100 | Create and Configure Alarm Using CloudWatch Using Terraform | Monitoring & Alerting |

---

## πŸ“‚ Repository Structure

```
πŸ“¦ kodekloud-eng-100-days-devops/
β”œβ”€β”€ πŸ“ Days-001-020-Linux-System-Administration/
β”‚ β”œβ”€β”€ πŸ“„ Day-001-Linux-User-Setup-Non-Interactive-Shell/
β”‚ β”œβ”€β”€ πŸ“„ Day-002-Temporary-User-Setup-Expiry/
β”‚ β”œβ”€β”€ πŸ“„ Day-003-Secure-Root-SSH-Access/
β”‚ └── πŸ“„ ... (through Day 20)
β”œβ”€β”€ πŸ“ Days-021-034-Version-Control-Git/
β”‚ β”œβ”€β”€ πŸ“„ Day-021-Setup-Git-Repository-Storage-Server/
β”‚ β”œβ”€β”€ πŸ“„ Day-022-Clone-Git-Repository-Storage-Server/
β”‚ └── πŸ“„ ... (through Day 34)
β”œβ”€β”€ πŸ“ Days-035-047-Docker-Containerization/
β”‚ β”œβ”€β”€ πŸ“„ Day-035-Install-Docker-Packages-Start-Service/
β”‚ β”œβ”€β”€ πŸ“„ Day-036-Deploy-Nginx-Container-App-Server/
β”‚ └── πŸ“„ ... (through Day 47)
β”œβ”€β”€ πŸ“ Days-048-067-Kubernetes-Orchestration/
β”‚ β”œβ”€β”€ πŸ“„ Day-048-Deploy-Pods-Kubernetes-Cluster/
β”‚ β”œβ”€β”€ πŸ“„ Day-049-Deploy-Apps-Kubernetes-Deployments/
β”‚ └── πŸ“„ ... (through Day 67)
β”œβ”€β”€ πŸ“ Days-068-081-Jenkins-CICD/
β”‚ β”œβ”€β”€ πŸ“„ Day-068-Setup-Jenkins-Server/
β”‚ β”œβ”€β”€ πŸ“„ Day-069-Install-Jenkins-Plugins/
β”‚ └── πŸ“„ ... (through Day 81)
β”œβ”€β”€ πŸ“ Days-082-093-Ansible-Automation/
β”‚ β”œβ”€β”€ πŸ“„ Day-082-Create-Ansible-Inventory-App-Server/
β”‚ β”œβ”€β”€ πŸ“„ Day-083-Troubleshoot-Create-Ansible-Playbook/
β”‚ └── πŸ“„ ... (through Day 93)
β”œβ”€β”€ πŸ“ Days-094-100-Terraform-AWS/
β”‚ β”œβ”€β”€ πŸ“„ Day-094-Create-VPC-Using-Terraform/
β”‚ β”œβ”€β”€ πŸ“„ Day-095-Create-Security-Group-Using-Terraform/
β”‚ └── πŸ“„ ... (through Day 100)
β”œβ”€β”€ πŸ“„ README.md
β”œβ”€β”€ πŸ“„ PROGRESS.md
└── πŸ“„ RESOURCES.md
```

---

## 🎯 Learning Objectives

### **Core Competencies**
- βœ… **System Administration**: Linux mastery, shell scripting, system monitoring
- βœ… **Infrastructure as Code**: Terraform, CloudFormation, automated provisioning
- βœ… **Configuration Management**: Ansible playbooks, infrastructure automation
- βœ… **Containerization**: Docker mastery, container security, optimization
- βœ… **Orchestration**: Kubernetes deployment, scaling, service management
- βœ… **CI/CD Pipelines**: Automated testing, deployment, and delivery
- βœ… **Cloud Platforms**: AWS, Azure, GCP services and best practices
- βœ… **Monitoring & Observability**: Grafana, Prometheus, log management

### **Professional Skills**
- πŸ”§ **Problem Solving**: Debug complex infrastructure issues
- πŸ“Š **Performance Optimization**: System and application tuning
- πŸ” **Security Best Practices**: Infrastructure and application security
- πŸ“ˆ **Scalability Planning**: Design for growth and reliability
- 🀝 **Collaboration**: DevOps culture and team integration

---

## 🚦 Getting Started

### **Prerequisites**
- Basic Linux command line knowledge
- Understanding of networking fundamentals
- Familiarity with at least one programming language
- Access to a Linux environment (physical, VM, or cloud)

### **Setup Instructions**
1. **Clone the repository**:
```bash
git clone https://github.com/MiqdadProjects/kodekloud-eng-100-days-devops.git
cd kodekloud-eng-100-days-devops
```

2. **Follow daily challenges**:
```bash
cd Day-001-User-Management
cat README.md
```

3. **Track your progress**:
- Update `PROGRESS.md` daily
- Document learnings and challenges
- Share your journey on social media with `#100DaysOfDevOps`

---

## πŸ“ˆ Progress Tracking

### **Current Status**
- πŸ—“οΈ **Start Date**: [Your Start Date]
- πŸ“… **Current Day**: Day X of 100
- ⏱️ **Days Remaining**: X days
- 🎯 **Completion Percentage**: X%

### **Milestones**
- [ ] **Week 3**: Linux System Administration Mastery
- [ ] **Week 5**: Git & Version Control Expert
- [ ] **Week 7**: Docker Containerization Pro
- [ ] **Week 10**: Kubernetes Orchestration Expert
- [ ] **Week 12**: Jenkins CI/CD Pipeline Master
- [ ] **Week 14**: Ansible Automation Specialist
- [ ] **Day 100**: Complete DevOps Engineer! πŸŽ‰

---

## 🀝 Community & Collaboration

### **Connect With Me**
- πŸ“§ **Email**: miqdadraja562@gmail.com

### **Join the Challenge**
- ⭐ **Star this repository** to follow the journey
- 🍴 **Fork it** to start your own 100-day challenge
- πŸ’¬ **Share your progress** using `#100DaysOfDevOps`
- πŸ”„ **Pull requests welcome** for improvements and corrections

---

## πŸ“š Additional Resources

- πŸ“– **[KodeKloud Platform](https://kodekloud.com/)** - Official learning platform
- 🎯 **[KodeKloud Engineer (Referral Link)](https://engineer.kodekloud.com/signup?referral=68aacafd8e393d6c859e5cb9)** - Join the challenge with my referral
- πŸ“ **[DevOps Roadmap](https://roadmap.sh/devops)** - Complete learning path
- πŸ“‘ **[Cheat Sheets](./resources/cheat-sheets/)** - Quick reference guides
- πŸ› οΈ **[Tools & Scripts](./resources/tools/)** - Helpful automation scripts

---

## πŸ’« Inspiration

*"The expert in anything was once a beginner who refused to give up."*

This challenge represents a commitment to continuous learning and professional growth in the ever-evolving field of DevOps. Every day brings new challenges, tools, and opportunities to build expertise that will drive infrastructure innovation and operational excellence.

---

### 🌟 **Ready to Transform Your DevOps Skills?**

**Let's embark on this 100-day journey together!**

[![Start Challenge](https://img.shields.io/badge/Start-100%20Days%20Challenge-success?style=for-the-badge&logo=rocket)](./Day-001-User-Management/)
[![Follow Progress](https://img.shields.io/badge/Follow-Progress-blue?style=for-the-badge&logo=github)](./PROGRESS.md)