40 Days of DevOps: Zero to Hero 🚀
A comprehensive, structured 40-day learning journey that takes you from foundational knowledge to practical, job-ready skills. This roadmap is perfect for beginners to experienced professionals and those looking to solidify their DevOps understanding.
- Waterfall & Agile Methodology Overview
- DevOps Overview
- Creating an AWS Account
- Creating a Linux EC2 Instance
- Downloading and Installing PuTTY and PuTTYgen
- Connecting to a Linux Server using PuTTY
- Creating and Connecting to an Ubuntu EC2 Instance Using PuTTY
- Creating and Connecting to a Windows EC2 Instance using RDP
- What is Linux
- Linux Basic commands with examples
- Linux directory structure
- Working with files
- Working with directories
- Working with
cp&mvcommands - Working with soft, hard link, and inode numbers
- Creating and deleting users in Linux
- Creating and deleting groups in Linux
- Working with file permissions
- Working with file ownership
- Working with
rmcommand - Working with
head&tail - Working with
top&freecommands - Working with
tarcommand - Working with
zipcommand
- Working with
yumcommand - Working with
rpmcommand - Working with
findcommand - Working with
df,du,kill,pscommands - Working with
echo,env,taccommands - Working with
sleep,exit,host,diffcommands
- Working with
sshcommand - Working with
scpcommand - Working with
crontab - Working with
sedcommand - Working with
telnet - Working with
netstatcommand - Working with
nslookup - Working with
ifconfigandipconfig
- What is Git
- Installing Git on Linux
- Installing Git on Ubuntu
- Installing Git on Windows
- Git Workflow
- Working with
git init&git configcommands - Creating and Deleting Git Branches
- Creating a GitHub Account
- GitHub Dashboard Overview
- Pushing Code from Local to Remote Repository
- Changing the Existing Remote URL in Local Repository
- Cloning a Repository from Remote to Local
- Difference between
git pullandgit fetch - Working with
git merge&git rebase - How to Create a Pull Request on GitHub
- Working with
git resetcommand - Working with
git revertcommand - Working with
.gitignorefile - Working with
git diff&git HEAD - Deletion of a GitHub Repository
- Feature Branching Strategy in Git
- Release Branching Strategy in Git
- Creation of a GitLab Account
- GitLab Dashboard Overview
- Creation of a Git Repository in GitLab
- Deletion of a GitLab Repository
- What is Maven
- How to Access an EC2 Instance from Windows Using MobaXterm
- Installation of Maven on Linux Server
- Installing Maven on Windows
- What is
pom.xml - What is
settings.xml
- Creating a Java Application using Maven
- Maven Build Lifecycles
- Creating a Web Application using Maven
- Types of Maven Repository
- Skipping Test Cases with Maven
- Understanding and Exploring
pom.xmlOptions
- What is Nexus
- Installation of Nexus on Linux Server
- Accessing Nexus Using the DNS Name
- Nexus Dashboard Overview
- Integrating Nexus with Maven
- What is JFrog Artifactory
- Installing JFrog on Linux
- Accessing JFrog using the DNS name
- Integrating AWS RDS PostgreSQL with JFrog
- Integrating JFrog with Maven
- What is SonarQube
- Installation of SonarQube on Linux Server
- Accessing SonarQube Using the DNS Name
- Integrating AWS RDS PostgreSQL with SonarQube
- Integrating SonarQube with Maven
- What is Tomcat
- Types of Roles Available in Tomcat
- Installing Tomcat on Amazon Linux
- Tomcat Dashboard Overview
- Setting Up Tomcat as a Service in Linux
- Deploying a WAR File in Tomcat
- Changing the Port Number in Tomcat on Linux
- Changing the Log Path in Tomcat
- Installing Multiple Tomcat Instances on a Single Server
- Installing Tomcat on Windows
- Changing the Port Number for Tomcat on Windows
- Upgrading Tomcat from Version 7.0.106 to 9.0.87
- Overview of Jenkins
- What are the different installation options for Jenkins
- Installing Jenkins on a Linux Server
- Accessing Jenkins Using the DNS Name
- Integrating EFS with Jenkins to Maintain Persistent Data
- Overview of the Jenkins Dashboard
- Exploring Manage Jenkins options
- Creating a Jenkins job
- Resetting the Jenkins Admin user’s password
- Installing and Managing Jenkins Plugins
- Setting up a Maven project in Jenkins
- Integrating Nexus with Jenkins
- Integrating JFrog with Jenkins
- Integrating SonarQube with Jenkins
- Exploring Build Triggers in Jenkins
- Restart, Safe Restart, Copy, and Move Jobs in Jenkins
- Using Build with Parameters in Jenkins
- Creating Users in Jenkins
- Setting up Role-Based Authorization Strategy
- Integrating Jenkins with Active Directory
- Understanding Master and Slave Nodes
- Setting up a Linux Slave Node in Jenkins
- Setting up a Windows Slave Node in Jenkins
- Upstream and Downstream Jobs
- Setting up the Build Pipeline
- Taking Backup and Restoring Jenkins
- Creating a Slack account
- Sending notifications from Jenkins to Slack
- Overview of Jenkins Pipelines
- Difference between Declarative and Scripted Pipelines
- Understanding fields in a Declarative Pipeline
- Exploring the Declarative Pipeline option
- Creating a sample Jenkinsfile
- Building a Java Application Using Jenkins Pipeline
- Publishing Artifacts to JFrog Artifactory with Jenkins Pipeline
- Integrating SonarQube with Jenkins Pipeline for Code Quality
- What is Ansible
- Installing Ansible on Linux
- How Ansible Workflow Works
- Introduction to Ansible Ad-Hoc Commands
- Ansible Ad-Hoc Commands with Examples
- What is SSH
- Manually Setting Up an SSH Connection
- What are Ansible Modules
- What is Ansible Playbook
- Automating HTTPD and Git Installation Using Ansible
- Using
with_itemsin Ansible Playbooks - Working with Variables in Ansible Playbooks
- Understanding Ansible Playbook Options
- Using Tags in Ansible Playbooks
- Automating Tomcat Installation with Ansible Playbook
- What is Ansible Role
- Understanding Ansible Role Directory Structure
- Automating HTTPD Installation with Ansible Role
- What is Ansible Vault
- Automating Tomcat Installation with Ansible Roles
- Difference Between Containerization and Virtual Machines
- What is Docker
- Exploring the Available Docker Components
- Installing Docker on Linux
- Installing Docker on Ubuntu
- Installing Docker on Windows
- What is a Dockerfile
- Writing a Dockerfile to Build an Image
- What is DockerHub
- Creating a DockerHub Account
- What is a Docker Image
- Docker Image Commands with Examples
- Pushing and Pulling Images from DockerHub
- Pushing and Pulling Images from AWS ECR
- What is Docker Storage
- What is a Docker Container
- Docker Container Commands with Examples
- Working with Docker Networks
- Working with Docker Volumes
- Maintaining Persistent Data for Docker Containers
- Reduce Docker Image Size by 80% with Multistage Docker Builds
- Writing a Real-Time Dockerfile for a User-Registration Microservice
- Automate Dockerfile Creation with Docker Init
- Automating Docker Image Build and Push to DockerHub Using Jenkins Pipeline
- Automating Docker Image Build and Push to AWS ECR Using Jenkins Pipeline
- Deploying Applications on Kubernetes Using Jenkins Pipeline
- Automating Kubernetes Deployment with Helm and Jenkins Pipeline
- Introduction to Jenkins Shared Libraries
- Difference Between Without and With Jenkins Shared Library
- Setting Up and Configuring Jenkins Shared Libraries
- Cloning and Building a Java Application using Jenkins Shared Libraries
- Using Jenkins Shared Library to Integrate SonarQube for Code Quality
- Build and Push Docker Image to DockerHub with Jenkins Shared Libraries
- Build and Push Docker Image to AWS ECR with Jenkins Shared Libraries
- Automating Kubernetes Deployment with Jenkins Shared Libraries
- Automating Kubernetes Deployment with Helm and Shared Libraries
- Installing Jenkins on Kubernetes using Helm
Congratulations! You've successfully completed the 40 Days of DevOps: Zero to Hero. Now, you're all set to confidently attend interviews and crack them!
