Skip to content

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.

License

Notifications You must be signed in to change notification settings

MiqdadProjects/kodekloud-eng-100-days-devops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

72 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

🌟 KodeKloud Eng 100 Days of DevOps Challenge

DevOps Banner Progress KodeKloud

Mastering DevOps Tools and Practices Through Hands-On Experience


πŸ“Œ About This Repository

Welcome to my 100 Days of DevOps journey! This repository serves as a comprehensive record of my learning experience through the KodeKloud Engineer challenge, showcasing real-world tasks and projects designed to build practical DevOps expertise. The tasks documented here reflect the specific challenges I encountered during the challenge, including detailed solutions and verification steps. Note: While the core objectives and challenges remain consistent, the specific values (e.g., server names, file paths, or other parameters) in these tasks may differ from those you encounter in your own environment. However, the underlying concepts and problem-solving approaches remain applicable, enabling you to adapt the solutions to your specific context.

🎯 Mission: Transform theoretical knowledge into actionable skills through daily hands-on challenges spanning the entire DevOps ecosystem.

⏱️ Timeline: This project spans 100 consecutive days, with each day introducing new challenges, tools, and learning opportunities to foster expertise in DevOps practices.


πŸ› οΈ Technologies & Tools Covered

System Administration & Infrastructure

Linux Ubuntu CentOS

Containerization & Orchestration

Docker Kubernetes Helm

Configuration Management & Automation

Ansible Terraform Puppet

Cloud Platforms

AWS Azure GCP

CI/CD & Version Control

Git GitHub Jenkins GitLab

Monitoring & Observability

Grafana Prometheus ELK Stack


πŸ“… 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:
git clone https://github.com/MiqdadProjects/kodekloud-eng-100-days-devops.git
cd kodekloud-eng-100-days-devops
  1. Follow daily challenges:
cd Day-001-User-Management
cat README.md
  1. 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

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


πŸ’« 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 Follow Progress

About

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.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published