First Steps into DevOps and Linux
Week 1: DevOps Basics, Ideology & Linux Commands
Introduction
Hello there! 👋 Last Sunday, I officially began my DevOps journey, and this past week has been an exciting deep dive into its fundamentals. I started by understanding what DevOps is, its ideology, core concepts, and terminologies. Alongside this, I ventured into the world of Linux—exploring installation methods, different Linux distributions, and, most importantly, learning essential commands. In this blog, I'll share my learnings, challenges, and how I overcame them.
Understanding DevOps: Beyond Just a Definition
When I first asked myself, "What is DevOps?", the common definition I found was:
DevOps is a set of practices that integrates software development (Dev) and IT operations (Ops) to shorten the development lifecycle while maintaining high software quality.
However, I quickly realized that DevOps is much more than a set of practices; it is a philosophy. It encourages collaboration between development and operations teams, reducing friction and accelerating code deployment into production.
The Software Development Lifecycle (SDLC)
I also came across the Software Development Life Cycle (SDLC), a structured process to develop software efficiently. It consists of:
Planning → Identifying requirements and setting goals.
Design → Creating architecture and technical specifications.
Development → Writing the actual code.
Testing → Ensuring the software works as expected.
Deployment → Releasing the software into production.
Operate & Monitor → Maintaining performance and addressing issues.
Continuous Integration & Continuous Deployment (CI/CD)
One of the most fascinating concepts I encountered was CI/CD:
➡️ Continuous Integration (CI) ensures that developers frequently merge their code into a shared repository, where it is automatically tested and built.
➡️ Continuous Deployment (CD) automates the process of releasing tested code, deploying it to production, and monitoring it for issues.
The main goal of CI/CD is to reduce human intervention, speed up deployment, and enhance code quality, thus minimizing the risk of large-scale failures.
Deployment Strategies
I also learned about different strategies used in production environments:
➡️ Rolling Deployment: Gradually replacing the old version of an application with a new one.
➡️ Blue/Green Deployment: Running two identical environments—one (blue) with the existing version and another (green) with the new version. Traffic is switched once testing is successful.
Other important concepts I explored include Virtual Machines (VMs), Containers, Linters, Log Aggregation, and Production Metrics.
Resources I Used for DevOps Basics:
After two days of DevOps basics, I moved on to Linux, and honestly, I was a bit nervous to start. But here’s how it went😅.
Getting Started with Linux
To begin my Linux journey, I first understood what Linux is:
Linux is an open-source operating system widely used for servers, development, and personal computing due to its security, flexibility, and stability.
I came across essential Linux components:
➡️ Kernel: The core of the OS, managing hardware-software interactions.
➡️ Bootloader: Loads the operating system into memory when the computer starts.
➡️ Shell: An interface to interact with the OS via commands.
Running Linux on My Windows System
Among various methods, I chose Virtual Machines (VMs). I installed VirtualBox and configured a Linux server. Later, I explored Vagrant, which automates VM creation and makes setup much easier.
Essential Linux Commands I Learned
I started with basic navigational commands:
➡️ pwd
, ls
, cd
– for navigating the file system.
➡️ File management commands: touch
, echo
, cat
, cp
, mv
, rm
, ls
.
➡️ System commands: df
, du
, top
, ps
, fuser
, vmstat
.
➡️ The fascinating nohup
command—used to run processes even after system shutdown and store process logs.
Next, I explored User & Group Management:
➡️ Creating, deleting, switching users (useradd
, userdel
, su
).
➡️ Managing groups (groupadd
, groupdel
, usermod
).
➡️ File permissions using chmod
and the importance of ****sudo
.
I also tackled Network Commands, including ping
, netstat
, ip
, traceroute
, mtr
, dig
, curl
, and wget
. These were confusing at first, but practice made them clearer.
Resources I Used for Linux:
TrainWithShubham: Linux For DevOps In One Shot | Beginners to Advanced
Kunal Kushwaha: Introduction to Linux & Terminal Commands - Full Course
Challenges I Faced & Solutions
- File Permission Issue in Vagrant
🔹 Problem: Initially, I couldn’t change file permissions inside the /vagrant
directory. I learned that Vagrant uses VirtualBox's default settings, which override permission changes.
🔹 Solution: /vagrant
is a shared folder between the host and VM, so permission changes were overridden. I either had to modify Vagrantfile
settings or work in /home/vagrant
, which resolved the issue.
- Struggles with User & Group Management Commands
🔹 Problem: While I could handle basic file operations, user management commands were tricky.
🔹 Solution: I practised more real-world examples and used ChatGPT for additional scenarios to get a deeper understanding.
- Network Commands Were Overwhelming
🔹 Problem: Too many commands at once felt confusing, and many seemed to have similar outputs.
🔹 Solution: I took a break, revised, and executed each command sequentially to observe differences. Practice is key!
What’s Next?
This past week has been exciting, challenging, and deeply rewarding. For the next week, I plan to:
✅ Complete advanced Linux commands (grep, awk, etc.)
✅ Dive deeper into Git and GitHub
✅ Begin learning Networking Fundamentals
I know the basics of Git and GitHub, but this time, I aim to go in-depth and explore real-world workflows.
Let’s Connect!
If you have any recommended resources, insights, or tips, I’d love to hear from you! Drop them in the comments. Thank you for staying with me till the last.
Have a wonderful day.