Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
c6b30ab
Initial commit
rashid-khan681 Aug 10, 2026
7b47673
Update README.md
rashid-khan681 Aug 10, 2026
ce334b6
docs: setup daily folders and professional README
Aug 10, 2026
46f0eb6
docs(2026/day-05): add complete linux troubleshooting runbook
Aug 10, 2026
bb6902e
fix(2026/day-05): cleanup markdown formatting
Aug 10, 2026
a43eadc
feat(2026): add Day 01 to Day 04 foundational documentation
Aug 10, 2026
f0efd6f
docs(2026): add dedicated solution markdown files for Day 01-04
Aug 10, 2026
457981a
docs(2026/day-06): add file-io-practice solution and practice logs
Aug 10, 2026
6b6e5ff
docs: fix README links, encoding, and update Day 06 status to completed
Aug 11, 2026
65fc7c3
docs(2026/day-07): add linux filesystem hierarchy & scenario practice…
Aug 11, 2026
9b941bb
merge: resolve README conflict and attach Day 01-07 solutions to orig…
Aug 11, 2026
ed27f79
fix(2026/day-07): resolve markdown formatting for code blocks
Aug 11, 2026
d8eac5a
docs(2026/day-08): update day-08 task files from fresh repo
Aug 13, 2026
77a815e
Day 09: Completed Linux User & Group Management Challenge
Aug 13, 2026
c2cfd0d
Day 10: Completed File Permissions & File Operations Challenge
Aug 14, 2026
294caa1
docs(2026/day-11): cherry-pick only markdown file from main
rashid-khan681 Aug 16, 2026
3adcade
docs(2026/day-11): added all screenshots to fix markdown rendering
rashid-khan681 Aug 16, 2026
c72f242
docs(2026/day-12): day-12 task completed and updated to active PR
rashid-khan681 Aug 17, 2026
fe385c6
docs(day-13): completed Linux Volume Management (LVM) task runbook
rashid-khan681 Aug 18, 2026
da2e1dd
docs(day-14): Day-14 task completed and added networking fundamentals…
rashid-khan681 Aug 20, 2026
d817631
docs(day-15): Day-15 task completed with networking concepts, CIDR ta…
rashid-khan681 Aug 20, 2026
2691e94
docs(day-16): day-16 task complited and added shell scripts, screensh…
rashid-khan681 Aug 21, 2026
7f05ded
Completed Day 17: Loops, Arguments & Error Handling
rashid-khan681 Aug 23, 2026
ce2593e
Completed Day 18: day-18 task completed with Bash Functions, Strict M…
rashid-khan681 Aug 24, 2026
02eee88
Completed Day 19: day-19 task completed with Log Rotation, Backups, a…
rashid-khan681 Aug 24, 2026
1c515db
Completed Day 20: day-20 task completed Log Analyzer and Report Gener…
rashid-khan681 Aug 25, 2026
b239a7d
Completed Day 21: The Ultimate Shell Scripting Cheat Sheet
rashid-khan681 Aug 26, 2026
8ffe110
day-22: day-22 task completed
rashid-khan681 Aug 31, 2026
8d894d8
day-23: Task completed with master solution and execution screenshots
rashid-khan681 Sep 1, 2026
b797a20
docs: day-24 task completed and added day-24 execution screenshots
rashid-khan681 Sep 1, 2026
cd4f4bd
Completed day-23-notes.md with Git commands explanations
rashid-khan681 Sep 1, 2026
3fcb805
day-23: task completed with screenshot
rashid-khan681 Sep 1, 2026
872c6c1
Delete 2026/day-23/task-4-git-pull 8.59.51 PM.png
rashid-khan681 Sep 1, 2026
c52f355
Delete 2026/day-23/task-3-github-push 8.59.59 PM.png
rashid-khan681 Sep 1, 2026
a0b3148
Day 25: Added notes and updated git-commands
rashid-khan681 Sep 2, 2026
b6e1b8c
Merge branch 'master' of https://github.com/rashid-khan681/90DaysOfDe…
rashid-khan681 Sep 2, 2026
b0dfac5
docs: day-26 task completed
rashid-khan681 Sep 3, 2026
88b7483
docs: Day 27 GitHub profile makeover and notes
rashid-khan681 Sep 3, 2026
e801009
docs(2026/day-28): complete 27-day revision, assessment checklist, an…
rashid-khan681 Sep 5, 2026
8ca6d68
docs(day-29): complete Docker fundamentals, container lifecycle, and …
rashid-khan681 Sep 5, 2026
ab4bb85
Day 30: Documented Docker image layers, container lifecycle states, a…
rashid-khan681 Sep 6, 2026
aa96ec2
docs(day-31): add complete documentation, task proofs, and DataPilot …
rashid-khan681 Sep 7, 2026
b52008d
Day 32: Implemented Docker Volumes for data persistence and Custom Ne…
rashid-khan681 Sep 8, 2026
f194126
docs(day-33): add docker compose guide and execution screenshots
rashid-khan681 Sep 8, 2026
abe93aa
Day 34: Advanced Docker Compose, Healthchecks, Restart Policies & Vol…
rashid-khan681 Sep 9, 2026
a823f0d
feat: implement multi-stage builds, docker hub push and security best…
rashid-khan681 Sep 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions 2026/day-01/introduction-to-devops.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# 🚀 Day 01 Task - Introduction to DevOps & Cloud Computing

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)

---

## 📌 Solution Overview
DevOps is a set of practices, tools, and a cultural philosophy that automates and integrates the processes between software development and IT teams.

### Key Learnings & Practical Applications:
- **Development + Operations Integration:** Reducing delivery cycles and manual handoffs.
- **CI/CD Pipeline Fundamentals:** Automating code testing and production deployments.
- **Cloud Infrastructure Benefits:** On-demand resource provisioning, scalability, and high availability.
12 changes: 12 additions & 0 deletions 2026/day-02/linux-basic-commands.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# 🐧 Day 02 Task - Linux Architecture & Essential Commands

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)

---

## 📌 Essential Commands & Terminal Outputs
- `pwd` — Print working directory (`/home/ubuntu/90DaysOfDevOpsChallengeRashidKhan`)
- `ls -la` — List files with permissions, hidden items, and detailed metadata
- `cd` & `mkdir` — Navigation and directory tree management
- `uname -r` — View Linux Kernel Version
11 changes: 11 additions & 0 deletions 2026/day-03/linux-permissions-user-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 🔐 Day 03 Task - Linux Permissions & User Management

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)

---

## 📌 Key Practices & Commands
- **Ownership Management:** `sudo chown ubuntu:ubuntu filename`
- **Permission Bit Configuration:** `chmod 755 filename` (`rwxr-xr-x`)
- **User & Group Administration:** `sudo useradd` & `sudo usermod -aG sudo username`
11 changes: 11 additions & 0 deletions 2026/day-04/package-and-services-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 📦 Day 04 Task - Package Management & Systemctl Services

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)

---

## 📌 Key Operations
- **Package Maintenance:** `sudo apt update && sudo apt upgrade -y`
- **Systemd Service Inspection:** `sudo systemctl status nginx`
- **Service Boot Enablement:** `sudo systemctl enable nginx`
68 changes: 68 additions & 0 deletions 2026/day-05/linux-troubleshooting-runbook.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# 🛠️ Linux Incident Troubleshooting & Triage Runbook

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)
**Task:** Day 05 - Production System Diagnostics & Incident Mitigation

---

## 📌 Incident Resolution Workflow

Whenever a server issues an alert, I follow this 4-step triage methodology:
1. **Resource Check:** Inspect RAM, CPU, and Disk space.
2. **Process Check:** Identify high-resource or hung process IDs (PIDs).
3. **Network Check:** Verify open ports and listening sockets.
4. **Log Inspection:** Check systemd logs and restart failed services.

---

## 1. System Resource Diagnostics

### A. Check RAM Usage
```bash
free -h -t
```

### B. Check Disk Space
```bash
df -h
```

### C. Check System Load
```bash
uptime
```

## 2. Process Identification & Management

### A. Find Top CPU Consuming Processes
```bash
ps aux --sort=-%cpu | head -n 10
```
### B. Find Top RAM Consuming Processes
```bash
ps aux --sort=-%mem | head -n 10
```
### C. Kill Unresponsive Processes
```bash
pgrep -fl nginx
kill 15 <PID>
kill -9 <PID>
```
## 3. Network & Port Diagnostics

### A. Check Open Listening Ports
```bash
sudo ss -tulpn | grep LISTEN
```

## 4. Service Lifecycle & Log Inspection

### A. Check Service Status
```bash
sudo systemctl status nginx
```
### B. View Live Logs for Troubleshooting
```bash
sudo journalctl -u nginx -n 50 --no-pager
```
60 changes: 60 additions & 0 deletions 2026/day-06/file-io-practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# 📝 Day 06 Task - Linux Fundamentals: Read and Write Text Files

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)

---

## 📌 Overview
File manipulation (creating, writing, appending, and inspecting) is a core foundational skill in DevOps. System configurations, deployment logs, and automation scripts are all plain text files. Mastering CLI file I/O operations enables faster debugging and seamless scripting.

---

## 🛠️ Step-by-Step Hands-on Execution & Output Log

### 1. File Creation & Line Overwriting (`>`)
Created an empty file `notes.txt` and initialized it with the first line using stdout redirection (`>`):
```bash
touch notes.txt
echo "Line 1: Initializing Linux File I/O Practice" > notes.txt
```

### 2. Appending Lines (>>)
Appended new log entries without overwriting existing file content using (`>>`):
```bash
echo "Line 2: Appending logs using standard redirection" >> notes.txt
```

### 3. Simultaneous Output & Append (tee -a)
Used (`tee -a`) to append a new line to the file while simultaneously piping stdout to the terminal:
```bash
echo "Line 3: Writing and displaying live via tee" | tee -a notes.txt
```
#### Terminal Output:
Line 3: Writing and displaying live via tee

### 4. Reading Full File Content (cat)
Inspected the complete contents of (`notes.txt`):
```bash
cat notes.txt
```
#### Terminal Output:
Line 1: Initializing Linux File I/O Practice
Line 2: Appending logs using standard redirection
Line 3: Writing and displaying live via tee

### 5. Inspecting File Parts (head & tail)
Extracted specific top and bottom lines for quick log auditing:
```bash
# Read first 2 lines
head -n 2 notes.txt

# Read last 2 lines
tail -n 2 notes.txt
```
#### Terminal Output (head -n 2):
Line 1: Initializing Linux File I/O Practice
Line 2: Appending logs using standard redirection
#### Terminal Output (tail -n 2):
Line 2: Appending logs using standard redirection
Line 3: Writing and displaying live via tee
3 changes: 3 additions & 0 deletions 2026/day-06/notes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Line 1: Initializing Linux File I/O Practice
Line 2: Appending logs using standard redirection
Line 3: Writing and displaying live via tee
2 changes: 2 additions & 0 deletions 2026/day-07/backup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
echo "Running Backup..."
117 changes: 117 additions & 0 deletions 2026/day-07/day-07-linux-fs-and-scenarios.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Day 07 Task - Linux File System Hierarchy & Scenario-Based Practice

**Author:** Rashid Khan
**Batch:** #90DaysOfDevOps (2026)

---

## Part 1: Linux File System Hierarchy

Understanding where system assets reside is critical for rapid incident diagnosis and system configuration.

| Directory | Purpose & Contents | Command Example | Use Case |
| :--- | :--- | :--- | :--- |
| **`/` (root)** | Top-level starting point of the entire directory tree | `ls -l /` | Navigating overall file system structure. |
| **`/home`** | Personal directories for regular users | `ls -la ~` | Storing user scripts, configs, and SSH keys. |
| **`/root`** | Home directory for the administrative superuser | `sudo ls -l /root` | Administrative maintenance and root-specific operations. |
| **`/etc`** | System-wide configuration files and startup scripts | `cat /etc/hostname` | Modifying network, system, or application settings. |
| **`/var/log`** | Variable data files, specifically application & system logs | `du -sh /var/log/* 2>/dev/null \| sort -h \| tail -5` | Debugging service failures and auditing logs. |
| **`/tmp`** | Temporary files created by system and programs | `ls -l /tmp` | Inspecting transient runtime data (cleared on reboot). |
| **`/bin`** | Essential user command binaries | `ls /bin` | Running single-user mode recovery utilities (`ls`, `cat`). |
| **`/usr/bin`** | Primary directory for user executable commands | `ls /usr/bin` | Standard CLI application execution. |
| **`/opt`** | Subdirectory for add-on/third-party application software packages | `ls /opt` | Installing standalone enterprise software (e.g., custom agents). |

---

## Part 2: Scenario-Based Troubleshooting Practice

### Scenario 1: Service Not Starting (`myapp`)
**Problem:** A web application service called `myapp` failed to start after a server reboot.

**Step 1:** Check current service status.
```bash
systemctl status myapp
```
Why: Identifies whether the service is inactive, active, or in a failed state.

**Step 2:** Inspect failure logs in systemd journal.
```bash
journalctl -u myapp -n 50
```
Why: Extracts the last 50 log lines to pinpoint stdout/stderr runtime errors.

**Step 3:** Verify if the service is configured to auto-start on boot.
```bash
systemctl is-enabled myapp
```
Why: Determines if the unit file is missing boot-time enablement.

**Step 4:** List all active services if myapp is missing.
```bash
systemctl list-units --type=service
```
Why: Confirms exact service naming syntax installed on the host.

### Scenario 2: High CPU Usage Investigation
**Problem:** Server response latency is high due to CPU saturation.

**Step 1:** Inspect top CPU-consuming processes interactively.
```bash
top
```
Why: Displays real-time live resource usage breakdown sorted by %CPU.

**Step 2:** Get a top-10 snapshot sorted by CPU usage.
```bash
ps aux --sort=-%cpu | head -10
```
Why: Instantly lists process owner, PID, CPU percentage, and exact executing command line.

### Scenario 3: Finding & Tailing Service Logs (`docker`)
**Problem:** Developer requests real-time log monitoring for the docker service.

**Step 1:** Verify active Docker service status.
```bash
systemctl status docker
```
Why: Ensures the docker daemon is active before inspecting logs.

**Step 2:** Inspect recent Docker logs.
```bash
journalctl -u docker -n 50
```
Why: Reviews recent startup and operational logs.

**Step 3:** Stream live Docker logs continuously.
```bash
journalctl -u docker -f
```
Why: Follows real-time log streams for active debugging.

### Scenario 4: Fixing Script Execution Permission (`backup.sh`)
**Problem:** Executing /home/user/backup.sh throws Permission denied.
**Step 1:** Check current file permissions.
```bash
ls -l /home/user/backup.sh
```
Output: -rw-r--r-- (Missing execute x permissions).

**Step 2:** Add execute permission for the file owner/group.
```bash
chmod +x /home/user/backup.sh
```
Why: Grants binary execution privileges.

**Step 3:** Verify permission change.
```bash
ls -l /home/user/backup.sh
```
Output: -rwxr-xr-x (Execute permission granted).

**Step 4:** Execute the backup script.
```bash
./backup.sh
```



74 changes: 74 additions & 0 deletions 2026/day-08/day-08-cloud-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Day 08 – Cloud Server Setup: Docker, Nginx & Web Deployment

## Overview
Today's task focused on launching an AWS EC2 instance, establishing remote SSH communication, installing Nginx and Docker, configuring AWS Security Groups for HTTP Port 80 and Custom TCP Port 8080 access, and extracting access logs for audit.

---

## Step-by-Step Execution & Screenshots

### 1. Cloud Instance Access & System Setup
Establish secure remote connection using SSH:
```bash
chmod 400 devopsrashid.pem
ssh -i devopsrashid.pem ubuntu@<YOUR_EC2_PUBLIC_IP>
```
![SSH Connection Terminal](ssh-connection.png)

Update system package indexes:
```bash
sudo apt update && sudo apt upgrade -y
```

### 2. Nginx & Docker Setup
Install Nginx web server:
```bash
sudo apt install nginx -y
sudo systemctl status nginx
```

Install Docker engine and run an isolated Nginx container on port 8080:
```bash
sudo apt install docker.io -y
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
sudo docker run -d -p 8080:80 --name docker-nginx-test nginx
```

Verify active container status:
```bash
sudo docker ps
```
![Docker Nginx Container Running](docker-nginx.png)

### 3. Inbound Web Verification
Configured AWS Security Group inbound rules for HTTP (Port 80). Verified web accessibility via browser:
![Nginx Welcome Webpage](nginx-webpage.png)

### 4. Log Extraction & Local SCP Transfer
Export active access logs and transfer to local machine for audit:
```bash
sudo tail -n 50 /var/log/nginx/access.log > ~/nginx-logs.txt
scp -i ~/Downloads/devopsrashid.pem ubuntu@<YOUR_EC2_PUBLIC_IP>:~/nginx-logs.txt ~/Downloads/
```

## Challenges Faced & Solutions
**Challenge:** Nginx installed and running successfully, but the web page was timing out on the browser using EC2
Public IP

**Root Cause:** AWS Security Group inbound firewall rules only permitted SSH traffic on Port 22 by default.

**Solution:** Navigated to AWS EC2 Security Groups -> Inbound Rules, added HTTP (Port 80) and Custom TCP (Port 8080)
from 0.0.0.0/0.

## What I Learned
**Cloud Provisioning:** Creating, managing, and connecting to AWS EC2 instances securely via SSH.

**Network Security:** Configuring Security Groups to allow specific inbound web traffic.

**Application Deployment:** Running web servers via native Linux services as well as isolated Docker containers.

**Log Auditing:** Isolating log entries from /var/log/nginx/access.log and pulling them locally using scp.



Binary file added 2026/day-08/docker-nginx.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions 2026/day-08/nginx-logs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
43.248.243.0 - - [12/Aug/2026:22:28:54 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0 Safari/605.1.15"
43.248.243.0 - - [12/Aug/2026:22:28:55 +0000] "GET /favicon.ico HTTP/1.1" 404 134 "http://100.53.20.2/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/27.0 Safari/605.1.15"
146.190.169.94 - - [12/Aug/2026:22:35:24 +0000] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
205.210.31.242 - - [12/Aug/2026:22:46:58 +0000] "GET / HTTP/1.0" 200 615 "-" "Hello from Palo Alto Networks, find out more about our scans in https://docs-cortex.paloaltonetworks.com/r/1/Cortex-Xpanse/Scanning-activity"
::1 - - [12/Aug/2026:23:32:42 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/8.18.0"
Binary file added 2026/day-08/nginx-webpage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 2026/day-08/ssh-connection.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading