π My DevOps Journey β Week 5: Scripting, Projects & Deepening Linux Mastery

π My DevOps Journey β Week 5: Scripting, Projects & Deepening Linux Mastery
ποΈ Day 1: Shell Scripting for Beginners β Finished in a Day!
Week 5 kicked off with a swift start: I completed the entire Shell Scripting for Beginners course by KodeKloud β in just one day.
Sounds fast, right? Here's why...
π¨βπ» Why It Felt Easy for Me
Honestly, the course was quite simple β not because the content was shallow (it wasnβt), but because of my past experience. I already had programming exposure from:
C (my first love in logic building)
Java (object-oriented grounding)
Basic Python (scripting comfort)
Even Flutter app development (for mobile UIs)
So this course was more about adjusting to Bash syntax than learning programming logic from scratch.
π What I Practiced:
Variables and dynamic substitution
Command-line arguments and user input
Loops and conditions
Functions to modularize my logic
Exit codes and basic error handling
Reading external files and validating status
Arithmetic using
expr
,$(( ))
, andbc
π οΈ E-Commerce Automation Script (My βStupid Meβ Moment)
The final project was to automate a LAMP stack deployment.
I initially wrote a working script with just sequential Linux commands. It ran fine, but lacked all the scripting concepts I'd just learned β no loops, no functions, no validations. It was embarrassing.
βI just used Linux basics in a shell scripting course?β
After watching the solution, I rewrote it entirely:
β
Functions
β
Service checks
β
Firewall setup
β
SQL generation
β
Color output
β
Exit codes
That moment hit hard β it taught me that working scripts arenβt always good scripts.
π‘οΈ Day 2: My First Linux Project β Secure Server Setup (Small but Foundational)
I applied everything I learned in Day 1 by building my first practical Linux project: a secure Ubuntu server setup from scratch.
π What I Implemented:
π€ Admin user configuration + sudo access
π SSH hardening with custom port and key-based login
π₯ UFW firewall setup (allow SSH, deny all)
π½ LVM setup: mounted /data + 1GB swap
π Static IP setup and hostname config
π Monitoring tools: htop, iostat, ncdu, etc.
All of it was written using modular Bash scripts!
π Project Structure
linux-projects/
βββ server-secure-setup/
βββ scripts/
βββ notes/
I scripted everything β from user creation to LVM to monitoring.
β¨ Highlights:
Learned how to structure reusable
.sh
scriptsRestarted SSH multiple times (yes, I forgot the port once π )
Used
systemctl
,mkfs
,mount
,ufw
, and more β all in automationRealized how much I retained from handwritten notes
π These projects were suggested to me by ChatGPT as a way to reinforce LFCS-level concepts through practice.
π I wrote every script myself, but got help from ChatGPT for creating the README.md
, planning.md
, and commands-used.md
files to keep the documentation clean and professional.
π½ Day 3: Linux Storage & Performance Lab (ACL + Partitions + Metrics)
On Day 3, I dove deeper into Linux storage, partitioning, permissions, and system diagnostics.
π§ What I Worked On:
1οΈβ£ Partitioning & Mounts
Created two partitions on
/dev/sdb
Formatted with
ext4
andxfs
Mounted them to
/mnt/data1
and/mnt/data2
Made mounts persistent via
/etc/fstab
π§ I struggled trying to reuse /dev/sdb
from Project 1. The LVM wasnβt properly wiped, and I had to use lvremove
, vgreduce
, pvremove
, and wipefs
.
It took a mix of Googling, ChatGPT, and my notes to fix it. A real debugging experience.
2οΈβ£ LVM Setup
Added a new disk
/dev/sdc
Created PV β VG β LV
Mounted
/mnt/lvdata
and made it persistent
3οΈβ£ ACL Setup
Used
setfacl
andgetfacl
for fine-grained user permissionsTested access between users
Learned how ACLs work on top of standard permissions
4οΈβ£ User Limits
Configured soft and hard limits for
nofile
using/etc/security/limits.conf
Validated limits using
ulimit
andsu
5οΈβ£ Performance & Stress Testing
Tools used:
iostat
,htop
,pidstat
,du
,stress
Ran stress tests and watched the system metrics spike in real time
π Project Structure
linux-projects/
βββ storage-performance-lab/
βββ scripts/
βββ notes/
π Again, documentation and markdown files were created with ChatGPTβs help β keeping everything neat and consistent.
βοΈ Day 4: DevOps-Ready Linux Box β Cron Jobs, Log Rotation, System Hygiene
On Day 4, I tackled scheduled jobs and log rotation β foundational automation for real-world Linux boxes.
π°οΈ What I Implemented:
1οΈβ£ Cron Jobs
Created a daily cron job to back up
/mnt/data1
to/mnt/data2
Wrote a
cron-jobs.sh
script to install the jobVerified using
crontab -l
and/var/log/syslog
2οΈβ£ Logrotate Configuration
Configured a custom log file (
/var/log/project4.log
)Used
logrotate.d/
to set rotation frequency, size limits, and compressionTriggered and tested log rotation manually
π This was a smaller project, but still critical β and it made me appreciate the βmaintenanceβ side of Linux.
π Project Folder:
linux-projects/
βββ devops-ready-box/
βββ scripts/
β βββ cron-jobs.sh
β βββ logrotate.sh
βββ notes/
π§ This day reminded me that not every project has to be huge β sometimes, a simple automation script can make a system reliable over months.
π Day 5: Documentation, GitHub Push, and Final Reflections
Today, I wrapped up Week 5 by cleaning up and pushing all my work to GitHub β and it felt incredibly satisfying.
Hereβs what I focused on:
π Organized My Repository
My main repo, linux-projects
, now contains all completed projects with a clean structure:
linux-projects/
βββ server-secure-setup/
βββ storage-performance-lab/
βββ devops-ready-linux-box/
Each project has:
scripts/
folder with modular.sh
filesnotes/planning.md
documenting the thought processnotes/commands-used.md
for all CLI usedREADME.md
explaining objectives and usage
π Finalized README Files
I revised and polished all the README.md
files for each project. Thanks to ChatGPT, they follow a clear and professional format with:
Overview
How to run
Tools used
Folder structure
βοΈ Planning and Commands Notes
Every project now includes:
planning.md
β where I described why I structured things the way I didcommands-used.md
β a handy reference of one-liners and CLI utilities used during testing
This helps future me (and maybe others!) to understand how everything was built.
π Final Commit & Push
After double-checking that every script was executable and every config file well documented, I did my final commit of the week:
git add .
git commit -m "week-5 added"
git push origin main
The repo now acts as my Linux project portfolio, and Iβll be building on top of it in Week 6 and beyond.
This final day might not seem as βtechnicalβ as the others β but honestly, organizing your work is a DevOps skill.
β Writing reusable code
β Documenting setup logic
β Structuring folders
β Keeping history clean
Itβs what transforms practice projects into real, presentable proof of skill.
β Week 5 is now complete.
Thanks to ChatGPT for guiding me through project ideas, helping document them clearly, and answering all my doubts as I went.
And thanks to my own discipline β showing up daily, debugging when stuck, and building one project at a time.
π§ Knowledge retained through:
My own handwritten notes
Trial and error
Googling a lot
And yes, ChatGPT
βοΈ Next week, I'm planning to go deep into Bash scriptingβnot just loops and conditionals, but really mastering shell automation, traps, signals, functions, and error handling. Iβd love to start learning Python tooβespecially with DevOps automation in mind.
The learning continues! π¨βπ»
π GitHub Repository: GitHub
π§Ύ Blog Archive: Blog
π LinkedIn: Anandhu P A
Subscribe to my newsletter
Read articles from Anandhu P A directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Anandhu P A
Anandhu P A
Iβm an aspiring DevOps Engineer with a strong interest in infrastructure, automation, and cloud technologies. Currently focused on building my foundational skills in Linux, Git, networking, shell scripting, and containerization with Docker. My goal is to understand how modern software systems are built, deployed, and managed efficiently at scale. Iβm committed to growing step by step into a skilled DevOps professional capable of working with CI/CD pipelines, cloud platforms, infrastructure as code, and monitoring tools