Skip to content
Open

Main #752

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
e4572e7
Create learning plan for DevOps and Cloud Engineering
00-Sachin May 19, 2026
81b9256
Basics of linux architecture
00-Sachin May 19, 2026
0fbafa1
linux-commands-cheatsheet with networking commands
00-Sachin May 20, 2026
e8c2d3e
Add Linux commands practice notes
00-Sachin May 20, 2026
1d5cd10
Add notes on Linux file I/O commands
00-Sachin May 22, 2026
07bb60d
Add Nginx health and troubleshooting runbook
00-Sachin May 22, 2026
b0e72d9
Phaase one changes
00-Sachin May 23, 2026
e9512fa
final edit
00-Sachin May 23, 2026
d395c8c
Document cloud deployment commands for EC2
00-Sachin May 25, 2026
ad0c100
Fix typos and enhance scp command explanation
00-Sachin May 25, 2026
7003f25
Fix typos and enhance clarity in deployment guide
00-Sachin May 25, 2026
186f0fc
Add Day 09 user management documentation
00-Sachin May 26, 2026
29357ff
Add Day 10 challenge notes on file permissions
00-Sachin May 27, 2026
09559ed
Add Day 11 notes on file ownership and permissions
00-Sachin May 27, 2026
860f625
Revise Day 12 reflection and goals
00-Sachin May 29, 2026
b8f4a6c
final edit
00-Sachin May 31, 2026
0fff928
Revise LVM documentation for AWS with NVMe details
00-Sachin May 31, 2026
56160c4
Expand networking.md with TCP model and troubleshooting tips
00-Sachin Jun 2, 2026
8700dc3
Document networking concepts in day-15 markdown
00-Sachin Jun 3, 2026
111c8ab
Enhance shell scripting documentation with examples
00-Sachin Jun 3, 2026
554fd7e
Summarize key learnings from shell scripting session
00-Sachin Jun 3, 2026
2885e18
Update day-16-shell-scripting.md
00-Sachin Jun 3, 2026
ababaca
Refactor day-17 scripting documentation
00-Sachin Jun 4, 2026
d9441f7
Enhance day-18-scripting.md with Bash scripting tasks
00-Sachin Jun 5, 2026
9f13941
Revise Day 19 project documentation
00-Sachin Jun 7, 2026
62c2db0
Enhance log_analyzer.sh with better validation and comments
00-Sachin Jun 8, 2026
e5fb740
Create shell_scripting_cheatsheet.md
00-Sachin Jun 8, 2026
ad68acb
Add Git commands and concepts notes
00-Sachin Jun 9, 2026
9fc5cbb
Add Day 23 notes on Git branching and GitHub
00-Sachin Jun 9, 2026
16ae509
Create notes for advanced Git techniques
00-Sachin Jun 11, 2026
59d4621
Document git reset command behaviors
00-Sachin Jun 12, 2026
35f0f63
added few things about revert
00-Sachin Jun 12, 2026
60e9c62
Enhance day-25 notes on Git commands and strategies
00-Sachin Jun 12, 2026
7d24e86
Document authentication methods for GitHub CLI
00-Sachin Jun 12, 2026
cbdc767
Update Day 26 notes with detailed GitHub CLI tasks
00-Sachin Jun 13, 2026
92f5776
Revise GitHub profile makeover notes
00-Sachin Jun 14, 2026
296698c
Add Day 28 notes on revision and self-assessment
00-Sachin Jun 16, 2026
7d0336a
Update Day 29 Docker Basics introduction
00-Sachin Jun 16, 2026
2ddc46d
Create day-30-images.md for Docker images overview
00-Sachin Jun 17, 2026
059320e
Create day-31-dockerfile.md for Dockerfile tutorial
00-Sachin Jun 18, 2026
8f0ba20
Create day-32-volumes-networking.md documentation
00-Sachin Jun 19, 2026
1f38f56
Create day-33-compose.md for Docker Compose tutorial
00-Sachin Jun 21, 2026
5a56cfe
Add Day 34 documentation for Docker Compose
00-Sachin Jun 22, 2026
6b7735c
Update Day 35 markdown for multi-stage builds
00-Sachin Jun 23, 2026
cc2475d
Add Docker cheat sheet with commands and instructions
00-Sachin Jun 24, 2026
b80c599
Create day-38-yaml.md for YAML basics
00-Sachin Jun 25, 2026
9a72210
Enhance CI/CD concepts and pipeline explanation
00-Sachin Jun 26, 2026
3f591a9
Add GitHub Actions & CI/CD guide notes
00-Sachin Jun 29, 2026
df343fa
Remove documentation screenshots from day-42.md
00-Sachin Jun 30, 2026
fd98852
Add Day 44 notes on CI practices and secrets management
00-Sachin Jul 5, 2026
99e6b3d
docker cicd iamge
00-Sachin Jul 5, 2026
fe9a3ad
added docker cidcd file
00-Sachin Jul 5, 2026
33ac8c3
Remove pipeline screenshot from day-45 documentation
00-Sachin Jul 5, 2026
7c00443
Revise day-46 reusable workflows documentation
00-Sachin Jul 6, 2026
2fd6a2b
Enhance documentation for GitHub Actions workflows
00-Sachin Jul 7, 2026
a71fc45
Enhance CI/CD workflows with reusable configurations
00-Sachin Jul 9, 2026
0eae779
Add Kubernetes architecture and cluster setup documentation
00-Sachin Jul 10, 2026
2e71d52
Create devsecops.md
00-Sachin Jul 10, 2026
14ee002
Dockerize Node.js app with PostgreSQL setup
00-Sachin Jul 14, 2026
b0b85b9
Document triggers and matrix builds in day-41
00-Sachin Jul 14, 2026
a0555fc
Add Day 43 documentation on GitHub Actions
00-Sachin Jul 14, 2026
357c9a6
Add Kubernetes Pod examples and explanations
00-Sachin Jul 14, 2026
f308b54
Remove self-note about screenshots in markdown
00-Sachin Jul 14, 2026
90a2631
Document Kubernetes Services and Networking
00-Sachin Jul 14, 2026
c84da41
Add guide on ConfigMaps and Secrets in Kubernetes
00-Sachin Jul 15, 2026
4878c2c
F Day 55 documentation
00-Sachin Jul 16, 2026
0011eb6
Document Kubernetes StatefulSets and their features
00-Sachin Jul 16, 2026
2f40035
Add Day 57: Kubernetes Resource Management and Probes
00-Sachin Jul 16, 2026
583269a
Document Metrics Server and HPA functionality
00-Sachin Jul 19, 2026
4a9db2d
Revise Day 59 Helm documentation
00-Sachin Jul 19, 2026
b9464ad
Add files via upload
00-Sachin Jul 21, 2026
9236856
Document Kubernetes deployment and test results
00-Sachin Jul 21, 2026
c5e7825
Add Terraform introduction and IaC conceptual notes
00-Sachin Jul 24, 2026
7d7f453
Enhance Terraform introduction with detailed explanations
00-Sachin Jul 24, 2026
a85d055
Enhance day-62.md with Terraform insights
00-Sachin Jul 25, 2026
6127410
added documentation
Jul 29, 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
31 changes: 31 additions & 0 deletions 2026/day-01/learning-plan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
THE CLEAR ANSWER FOR MY WHAT WHY HOW ?



What is your understanding of DevOps and Cloud Engineering?

DevOps is a practice or mindset that an organization follows to develop applications and software efficiently and effectively.
It helps bridge the gap between the development team and the operations team. It automates daily tasks to reduce the chance of mistakes and save time.
Meanwhile, Cloud Engineers are the ones who manage and perform these tasks on cloud servers. Collectively, they help the organization deploy changes efficiently and quickly.



Why are you starting to learn DevOps & Cloud?

As per the latest IT trends, DevOps and Cloud Engineering jobs are among the highest-paying, and there is a high demand for these roles in the market.
This career path also provides me with the opportunity to work remotely.



Where do you want to reach?

I want to become a Senior DevOps Engineer or Cloud Architect where I can design scalable, automated infrastructure for global applications.
Ultimately, my goal is to reach a level of expertise where I can lead technical projects, mentor others, and enjoy the flexibility of working from anywhere in the world.



How will you stay consistent every single day?

It is my own dream, so following my dream is what keeps me consistent.


54 changes: 54 additions & 0 deletions 2026/day-02/linux-architecture-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
Day 2 Today’s goal is to understand how Linux works.

Short notes:

The core components of Linux (kernel, user space, init/systemd)

Kernel: Think of it as the brain. It allocates resources ("CPU," "RAM," "Disk") to various processes for a specific amount of time.
It can directly communicate with the hardware of the system and is also known as the core of Linux.

User Space: This is the space where all applications, programs, and shells (like Bash) run.
Because they cannot directly interact with the hardware, they do so with the help of the kernel.

init/systemd: It is the very first process that starts after your system boots Linux, and its PID is always 1.
It acts like a parent process that sets up your system to work.



How processes are created and managed

Processes are simply a running instance of a program.
IN Linux we have 2 ways to create a process, 1st one is fork() "clone the current processes" 2nd exec() "REplace the clone with the new program"

To manage these processes we use its different states

Running (R): The process is actively executing on the CPU or is in the queue ready to execute.

Sleeping (S / D): The process is resting, waiting for an event or resource.
Interruptible (S): Waiting for user input or a timer.
Uninterruptible (D): Deep sleep, usually waiting on disk or network I/O.

Stopped (T): The process has been suspended or paused (e.g., by pressing Ctrl+Z in the terminal).

Zombie (Z): The process has finished executing and is dead, but its parent process hasn't checked its exit status yet.
It is essentially a "ghost" lingering in the process table.



What systemd does and why it matters

systemd is kind of a modern system and service manager for Linux.
It boots the system, manages background services, and handles logging.

It amtters because it allows services to start in parallel (making boots faster), automatically restarts crashed applications, and it is a primary tool for diagnosing
why a web server or database failed to launch.



5 Daily Commands for DevOps

ps aux: provdide the information about the current running processes and who owns them
top: It shows the live details of running processes in a more interactive way
kill -9 <PID>: kills the frozen or dead process forcefully
systemctl status <service_name>: it checks the background runing processes details like nginx, docker etc.
journalctl -u <service_name>: Reads the specific logs for a systemd service. This is the first stop when an application fails to start.
41 changes: 41 additions & 0 deletions 2026/day-03/linux-commands-cheatsheet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
Day 03 – Linux Commands Practice

Today’s goal is to build a Linux command confidence.

I created a cheat sheet of commands focused on:


Process management

pwd: Prints the current working directory (where are we right now).
ls -la: Lists all files (including hidden ones) with detailed ownership and permission info.
cd /path/to/dir — Changes your directory to the specified path.
mkdir: Creates a new directory.
rm -rf /folder: Forcefully and recursively removes a folder and its contents (use with extreme caution).
cp source.txt dest.txt: Copies a file or directory to a new location.
mv oldname.txt newname.txt — Moves a file, or renames it if the destination is in the same folder.
cat file.txt: Prints the entire contents of a file directly to your terminal.
tail -f /var/log/syslog — Continuously shows the end of a log file as new lines are added.
grep "error" file.txt — Searches inside a file and outputs only the lines containing the specific word.
chmod +x script.sh — Changes the permissions of a file to make it executable.
chown user:group file.txt — Changes the owner and group assigned to a file or directory.


File system

ps aux: Captures a snapshot of every single process currently running on the system.
top: Opens a live, interactive dashboard showing CPU, memory usage, and active processes.
kill -9 <PID> — Forcefully terminates a stuck or rogue process using its Process ID.
df -h — Shows available disk space on your hard drives in a human-readable format (MB/GB).
systemctl status docker — Checks if a background service (like Docker or Nginx) is running or failed.
systemctl restart docker — Stops and immediately starts a service to apply new configurations.
journalctl -u docker — Retrieves the specific background logs for a systemd service to diagnose crashes.


Networking troubleshooting

ping google.com — Tests network connectivity by providing a continuous response.
ip addr — Displays the IP addresses currently assigned to your machine's network interfaces.
curl -I https://google.com : Fetches the HTTP headers of a website to test if the web server is responding.
dig domain.com — Queries the DNS records to see exactly which IP address a domain name points to.
netstat -tulpn — Lists all open network ports on your machine and shows which processes are using them.
68 changes: 68 additions & 0 deletions 2026/day-04/linux-practice.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
Day 4 Hands on practice of linux commands

Process Checks


How to check for a particular process?

pgrep -a cron
888 /usr/sbin/cron -f -P #888 is the PID

what is the command used to check the bussiest processes

top -n 1 # we use -n 1 for the current time glimpes
2399 sachin 20 0 397512 12372 7068 S 8.3 0.1 0:02.55 ibus-da+


System Checks

Command used to know the helth of a proceses by the system

systemctl status cron
## It tells you the detail explantion about that process

systemctl is-active cron
## It tell in one word wheather the system is active or not


Log Checks

Command used to read the service's diary

journalctl -u cron -n 5 # used to check for a particular services
May 20 17:35:01 sachin-H510M-K-V2 CRON[4337]: (root) CMD (command -v debian-sa1>
May 20 17:35:01 sachin-H510M-K-V2 CRON[4336]: pam_unix(cron:session): session c>
May 20 17:45:01 sachin-H510M-K-V2 CRON[4491]: pam_unix(cron:session): session o>
May 20 17:45:01 sachin-H510M-K-V2 CRON[4492]: (root) CMD (command -v debian-sa1>
May 20 17:45:01 sachin-H510M-K-V2 CRON[4491]: pam_unix(cron:session): session c>

Command used to read the general system diary

tail -n 10 /var/log/syslog
2026-05-20T17:46:40.135011+05:30 sachin-H510M-K-V2 systemd[1]: bluetooth.service - Bluetooth service was skipped because of an unmet condition check (ConditionPathIsDirectory=/sys/class/bluetooth).
2026-05-20T17:46:42.135821+05:30 sachin-H510M-K-V2 fwupd[4539]: 12:16:42.135 FuMain fwupd 1.9.34 ready for requests (locale en_US.UTF-8)
2026-05-20T17:46:42.137093+05:30 sachin-H510M-K-V2 dbus-daemon[863]: [system] Successfully activated service 'org.freedesktop.fwupd'
2026-05-20T17:46:42.137280+05:30 sachin-H510M-K-V2 systemd[1]: Started fwupd.service - Firmware update daemon.
2026-05-20T17:46:42.170833+05:30 sachin-H510M-K-V2 systemd[1]: fwupd-refresh.service: Deactivated successfully.
2026-05-20T17:46:42.170976+05:30 sachin-H510M-K-V2 systemd[1]: Finished fwupd-refresh.service - Refresh fwupd metadata and update motd.
2026-05-20T17:50:07.078599+05:30 sachin-H510M-K-V2 systemd[1]: Starting sysstat-collect.service - system activity accounting tool...
2026-05-20T17:50:07.081690+05:30 sachin-H510M-K-V2 systemd[1]: sysstat-collect.service: Deactivated successfully.
2026-05-20T17:50:07.081777+05:30 sachin-H510M-K-V2 systemd[1]: Finished sysstat-collect.service - system activity accounting tool.
2026-05-20T17:50:59.521976+05:30 sachin-H510M-K-V2 google-chrome.desktop[3048]: [3041:3041:0520/175059.521196:ERROR:ui/ozone/platform/wayland/host/wayland_data_drag_controller.cc:179] Invalid state when trying to start drag. source=kMouse


Mini Troubleshooting Steps
If you ever check a service and it says inactive or failed, here is the exact sequence to fix it

1.Restart the service:Turning it off and on again fixes 90% of issues.
Run sudo systemctl restart cron

2.Verify it worked:
Run systemctl status cron to make sure it says active (running).

3.Check for errors:If it still fails,
run journalctl -u cron -e to jump to the very end of the logs and read the red error messages to see exactly what broke.




46 changes: 46 additions & 0 deletions 2026/day-05/helth-and-troubleshooting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
Mini Runbook: Nginx Health & Troubleshooting
Target Service: nginx
Objective: Capture a system health snapshot, verify filesystem sanity, and trace service logs.

1. Environment Basics
Command: uname -a and cat /etc/os-release

Observation: Successfully identified the operating system version and kernel details before starting work.

2. Filesystem Sanity
Command: mkdir /tmp/runbook-demo && cp /etc/hosts /tmp/runbook-demo/hosts-replica && ls -l /tmp/runbook-demo

Observation: Verified that basic read/write permissions are working perfectly in the /tmp directory.

3. CPU & Memory Health
Command: pgrep nginx (to get the PID) followed by ps -o pcpu,pmem,comm -p <PID>

Observation: Nginx is running and consuming minimal CPU and memory resources.

Command: free -h

Observation: System RAM has plenty of available overhead.

4. Disk & I/O
Command: df -h and du -sh /var/log

Observation: Disk partitions have sufficient free space, and the /var/log directory is not taking up abnormal amounts of storage.

5. Network Connections
Command: ss -tulpn | grep nginx

Observation: Confirmed Nginx is actively listening on its assigned ports (usually 80 and/443) and there are no dead connections (curl -I).

6. Log Tracing
Command: journalctl -u nginx -n 50 and tail -n 50 /var/log/kern.log

Observation: Scanned the last 50 lines of both the Nginx specific logs and the general kernel logs. No critical errors or warnings detected.

🚨 If This Worsens (Escalation Steps)
If Nginx becomes unresponsive or spikes in resource usage, I will take these 3 steps:

Test Configuration & Restart: Run nginx -t to ensure no syntax errors exist, then run sudo systemctl restart nginx to clear the stalled process.

Increase Log Verbosity: Modify the Nginx configuration to enable "debug" level logging to catch exactly where requests are failing.

Trace System Calls: Use strace -p <PID> on the Nginx worker process to see if it is getting stuck trying to read a specific file or connect to a backend database.
46 changes: 46 additions & 0 deletions 2026/day-06/notes-file-op.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
Day 6: Linux Fundamentals – Read and Write Text Files
File: file-io-practice.md

Today’s focus is on manipulating text files directly from the command line. Instead of opening a text editor, I used basic input/output redirection to create, write, and read files.

1. Creating the File
Command: touch notes.txt

What it did: Created a completely empty file named notes.txt. (If the file already existed, it would just update the "last modified" timestamp without changing the actual text).

2. Writing Text (The Dangerous Way)
Command: echo "Line 1: Starting my Linux file practice." > notes.txt

What it did: The single > symbol is a redirect. It took the text from echo and pushed it into the file.

Note: A single > will overwrite everything currently in the file. It is a destructive command!

3. Appending Text (The Safe Way)
Command: echo "Line 2: Appending this line so I don't lose Line 1." >> notes.txt

What it did: The double >> safely added this new text to the very bottom of the file without deleting the first line.

4. Writing and Viewing Simultaneously
Command: echo "Line 3: Using tee is pretty cool." | tee -a notes.txt

What it did: The tee command splits the output like a "T" junction in a pipe. It printed the text to my terminal screen and safely appended it (-a) to the file at the same time.

5. Reading the Full File
Command: cat notes.txt

What it did: Read and displayed the entire content of the file in the terminal. I could see all three of my lines perfectly.

6. Reading Parts of the File
Command: head -n 2 notes.txt

What it did: Displayed only the top 2 lines of the file. This is great for peeking at the beginning of huge files without flooding the terminal screen.

Command: tail -n 2 notes.txt

What it did: Displayed only the bottom 2 lines of the file. This is exactly what I would use to check the most recent entries at the very end of a system log file.

7. Command used to do both at same time

tee: it works as echo "This line will print on terminal as well as saved in a file" | tee -a /var/location-of-file.txt


72 changes: 72 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,72 @@
1. Linux File System Hierarchy

"/" : This is the root directory it is the topmost level of the entire file system hierarchy
it contains various major directories/files within it like "boot" "bin" "etc" "home" and much more.
i would use this directory when i have to figure out anything about the system

"/home" : This is a dedicated, private space for each user account
It contains the name of the users using your system
I would use this directory when i have to search for any users

"/root" : It is the home directory of the admin
It contanis admin dedicated things
NOrmal user can't open this directory

"/etc" : It is the central hub for system-wide configuration files
It contains all the files that describes or tells the operating system how to perform "ssh" "cron"
I will use this directory when i have to check any deep information about any process

"/var/log" : This directory is very essential in linux as it saves the record of everything that happens in your system
it contains "boot" "config" "syslog"
this will often used widely by me to check for any faults

"/tmp" : As the name suggest it stores only the temprory files that are created by users, os, procesees.
It shows folders for different application like for the chrome "com.google.Chrome.DLjzx0"
I will use it to store my temporary files.

"/bin" : Contains essential system binaries required for the system to boot and run in single-user mode.
it also contains foundational commands here like ls, cp, and mv .
I will use this directory when i have to check for any boot related quaaries

"/usr/bin" : Stores the majority of user-accessible programs that are not critical for basic system booting, such as python, git, or text editors

"/opt" : It stores all the information about the third party apps that are installed in your system
i saw the directory of chrome where many information are stored
i used this to see for any third party application

Hands On Task

Command used to check the top 5 biggest file in your log folder

"du -sh /var/log/* 2>/dev/null | sort -h | tail -5" :

breif explanation: du : used to chechk the free space
-sh : these flags used to summerize && human readable form
/var/log/* : In this * tells to chek the complete log directory
2> : used to pass all the unwanted error
/dev/null : a black hole
sort -h : sort the data into human readable form small to big
tail -5 : prints the last 5 lines of teh output


"cat /etc/hostname": Prints your computer hostname

"ls -la ~" : shows all the hidden files in the home directory that starts with .

2. Scenario Practice

The Dead Service. A service named myapp didn't start after a reboot.
step1 : systemctl status myapp : check the current status of the app.
step2 : journalctl -u myapp -n 10 : It shows the most recent activity of myapp
step3 : systemctl is-enabeld myapp : it checks the system trias to start it

Scenario 2: The Sluggish Server. The server is slow and the CPU is spiking.
step1: htop : to see which processes takes more cpu percentage and fetch thier PID
step2 : kill -9 <PID> : It terminate the processes

Scenario 3: The Missing Logs. A developer needs the logs for the docker service.
step1 : journalctl -u docker : It gives all the requierd logs related to docker

Scenario 4: The Blocked Script. A script at /home/user/backup.sh says "Permission denied".
step1 : ls -l : To check the permmison of that backup.sh
step2 : chmod 777 : It changes the permission to allow everthing to everyone ("NOte it is risky gave permission accordingly")
33 changes: 33 additions & 0 deletions 2026/day-08/cloud-deployment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
Commands used :
(Before starting whith commands you must have to do these things create a ec2 instance and find the link of ssh
that is located insde the connect section of the aws page)

My-key-pair : is created when you are launching the instance

comaand 1 : Used to check where the private key was installed or located and change the
directiry as per that using cd command

command 2 : ssh -i <My-key-pair> ubuntu@<your public dns>

command 3 : sudo apt-get update && sudo apt upgrade

command 4 : sudo apt install nginx

command 5 : systemctl status nginx

command 6 : journalctl -u nginx >> nginx-logs.txt

comaand 7 : scp -i <key pair.pem> ubuntu@<public dns> : ~/nginx-logs.txt .



Challange that i faced is during scp when i forget to use "." in the end then i realized that it
tell the system to paste it where the user is currently located



WHat I Learn

scp command : that is how to store file form server to local

. : tells the system to use the current location as a destination location .
Loading