
Explore how DevOps unites development and operations to accelerate reliable software delivery, with hands-on exposure to Jenkins, Maven, Ansible, Docker, and Kubernetes in end-to-end ci/cd pipelines.
Explore what DevOps is, its benefits, and tools like Git, Docker, and Kubernetes across the life cycle from planning to monitoring to accelerate delivery.
Explore continuous development as the first phase of the DevOps lifecycle, aligning the project vision with client requirements, planning, and centralizing code in a GitHub repository using git.
Learn how continuous integration pulls code from GitHub, builds with Maven, reviews quality with Sonarqube, and stores artifacts in Nexus, with automated Jenkins pipelines and notifications.
Learn to implement continuous deployment and continuous delivery within a DevOps lifecycle by automating from source code to production using GitHub, Maven, SonarQube, Ansible, Docker, and Kubernetes.
Execute automated continuous testing within a dockerized test environment, using selenium, test ng, JUnit, and Jenkins to validate builds from GitHub through CI/CD and generate test reports.
Record and monitor application performance across CPU and memory utilization, network traffic, response times, and error rates using Prometheus, Grafana, Elk, and Nagios in production or test environments.
Analyze end-user feedback from production to continuously improve application performance and reduce bugs by guiding developers to rectify issues, streamline deployment, and enhance user experience.
Create an AWS account, access the AWS Management Console, and launch a Linux EC2 instance (Amazon Linux or Ubuntu). Understand billing, free tier, and connecting with Mobaxtum or Putty.
Launch an Amazon Linux EC2 instance in the AWS console. Choose the Amazon Linux 2023 AMI, t2.medium, and create an RSA key pair for SSH access in the default VPC.
Connect to an Amazon Linux ec2 instance using MobaXterm or Putty with the public IP and ec2-user; use the private key .pem and port 22, then sudo -i for root.
Connect to an Amazon Linux instance via PuTTY by installing PuTTY and PuTTYgen, converting the private key to a PPK, using the IP and EC2-user, with port 22 open.
Launch an ubuntu ec2 instance in the aws management console, configuring storage, security groups, and key pairs. Access the instance using mobaxterm or putty with the ubuntu default user.
Learn how a private key and a public key form a key pair to securely log into a server, using the dot pem private key and the authorized_keys public key.
learn to enable passwordless ssh between amazon linux web server and ubuntu server by generating rsa keys, configuring authorized_keys, and setting proper .ssh permissions.
Learn to create a new Ubuntu user, configure a home directory, and set up ssh with dot ssh and authorized_keys, preparing for passwordless authentication in a DevOps workflow.
Explore the linux filesystem hierarchy and filesystem hierarchy standard from the root directory, detailing /bin binaries, /boot boot files, /dev device files, /etc configs, and /home user homes.
Explore the Linux filesystem structure, noting how /lib supports binaries in /bin and /sbin, and how /media and /opt, /usr, /proc, and /run organize libraries, applications, and runtime data.
Log into an Amazon Linux ec2 instance as ec2-user, elevate to root with sudo via the wheel group, then use mkdir, ls, cd, pwd, touch, and cat to manage files.
Learn basic Linux commands for copying, moving, and renaming files and directories, preserving permissions with cp -p, navigating with cd, and listing or viewing content with ls and cat.
Create and manage Linux user accounts by adding users, assigning UID and GID, setting passwords, configuring home directories and shells, and understanding shadow file storage and account aging.
Learn to create groups and users on a Linux system with groupadd and useradd, assign a primary and supplementary groups, manage home directories, shells, and uid/gid entries.
Create a user with a primary and supplementary group, view groups with id, lock or unlock using passwd -L, and rename with usermod -l while noting directory may stay unchanged.
Use the Linux usermod command to modify user properties such as password, home directory, group, and shell, lock or unlock accounts, and verify changes via the shadow file.
Clone a remote repository to your local workspace with Git Bash, then learn the three git stages—working, staging, and local repository—while adding and committing changes.
Push local changes to remote by staging with git add, committing with git commit, and pushing to origin main, while handling authentication via credential manager.
Demonstrates editing a local file and guiding the git workflow—from working area and untracked changes to staging, commit, and pushing to origin main on GitHub.
Explore how git log reveals commits, commit IDs, and head positions, then push changes to origin main and distinguish local from remote in practical workflows.
Explore how branches in GitHub isolate development work, with main, develop, and feature branches and pull requests. Learn to merge to develop and master for safe testing and releases.
Learn to create and manage branches in a GitHub repository by cloning a project, creating master and develop branches, and pushing changes with git push and upstream setup.
Learn how to create a feature branch from develop, commit and push changes, open a pull request to merge into develop, and delete the feature branch after merge.
Create a hotfix branch from master to address production issues, merge back into master and develop, and understand how hotfix differs from release for rapid fixes.
Create a release branch from develop and push it upstream for testing. Open a pull request, merge to develop, and manage hotfixes and release naming.
Learn to create a pull request, enable branch protection rules requiring a reviewer on the develop branch, add a reviewer, and complete the pull request merge with an approval.
Practice with pull requests on a release branch, create and push bug fix files, open a PR to develop, assign a reviewer, and cycle through comment, request changes, merge.
Explore how git merge conflicts arise when the same file differs between branches, and learn to resolve them by comparing contents with a diff tool and choosing the correct version.
Resolve conflicts in a merge with tortoisegit by using edit conflicts, selecting the desired version from head or feature branch, marking as resolved, and committing.
Resolve a GitHub merge conflict by using the web editor to reconcile conflicting files in a pull request from test for conflict into develop, then complete review and merge.
Explore how to revert accidentally created untracked files in git using git clean -f, and remove directories with git clean -f -d in a develop branch scenario.
Undo changes to an existing file by restoring it from the GitHub remote using git checkout -- filename. Note that git clean -f cannot revert committed edits.
Understand how to use git reset to move to a specific commit and remove commits, files, or content with soft and hard options, and compare it to git revert.
Learn how cherry-pick in git selects individual commits from a branch to apply to another, enabling precise integration of specific changes without full merges or rebases.
Learn to use git tags to mark a specific commit as a release, creating fixed version points like 1.0 and 2.0 on the develop branch, then push tags to remote.
Learn the differences between git rebase and git merge, including how rebase avoids extra commits and merges history across main and master branches in practical demos.
Master the Apache Maven tool to build Java packages using the pom.xml for DevOps workflow, defining groupId, dependencies, plugins, and versioning. Learn key mvn commands like mvn clean install.
Explore Maven's default, clean, and site lifecycles, and learn the seven phases—validate, compile, test, package, verify, install, and deploy—and how they drive building, cleaning, and deployment steps.
Explore maven repositories—local, remote/private, and central/public—and how dependencies from the pom.xml are resolved. See first-time downloads populate the local .m2 repository, then artifacts appear in the target directory for reuse.
In this lab, we will explore how to find artifacts and manage dependencies for built packages.
Explore how the pom.xml controls artifact creation, including artifact id, version, extension (jar or war), and dependencies, and see how mvn package generates and updates the artifact in target.
Access spring boot application via url after running jar on port 8080, enable the security group inbound rules, rebuild with mvn clean package, and verify access with the public ip.
Explore Apache Maven's build lifecycle: validate, compile, test, package, install; then deploy to a remote repository with the ambient deployer for CI/CD.
In this online DevOps course, you will learn the following aspects:
- Gain in-depth knowledge of the DevOps methodology.
- Implement software version control.
- Git, Jenkins & Maven Integration
- Apache Maven - Spring Boot Maven Project
- SonarQube - Code quality tool for better code
- Containerize code for production using Docker.
- Create CI/CD pipelines using Jenkins.
- Manage configurations using Ansible.
- Automate build and testing using Selenium and Maven.
- Orchestrate containers using Kubernetes.
Every section of this course has a different set of quizzes, and there is also many project lab assignment that will help you demonstrate what you have learned.
Course Curriculum
Module 1: Overview of DevOps
Introduction to DevOps
Benefits of working in a DevOps environment
DevOps Lifecycle
DevOps Stages
DevOps Delivery Pipeline
Module 2: AWS - EC2 Service
Create an AWS Account
Create an EC2 Instance - Amazon Linux
Create a key pair - Public & Private Key
MobaXterm - Connect EC2 Instance
Putty - Connect EC2 Instance
Create an EC2 Instance - Ubuntu
Access Instance using User Name & Password (Without using Private key)
More about private & public key
Passwordless authentication from Linux to Ubuntu Server
Lab - Access the Amazon Linux Instance other than the default user
Lab - Access the Ubuntu Linux Instance other than the default user
Lab - Passwordless Authentication between Amazon Linux & Ubuntu and Vice versa
Module 3: Linux
Linux File Hierarchy Structure
Basic Linux Commands Practice
pwd, touch, vi, vim, nano, cp, mv, mkdir etc
Module 4: Manage User Account in Linux
Overview of User Administration
Lab - Managing User Account
Lab - User & Group Creation
Lab - Primary & Supplementary group
Lab - Usermod Command
Lab - Shadow file
Module 5: Version Control with Git
Overview of Git & GitHub
Create a GitHub Account, repository, clone - Distributed Version Control System
Git configuration
Stages in Git
Git pull from Remote to Local
Git push from Local to Remote
Stages in Git - Add & Commit
Module 6: Working with Branches in Git
Introducing Branches
Lab - Create branches (master & Develop)
Create & push branch from Local to Remote
Feature branches
Pull Request - To merge one branch into another
Release branch
Hotfix Branch
Lab - Release & Hotfix Branch
Add Reviewer in Pull Request with Branch protection rules
PR - Comment, Approve & Request changes
Module 7: Conflict Resolutions in Git
Understanding conflicts in git merge
Create a merge conflict & resolve it
Use TortoiseGit S/W to resolve conflicts
Resolve conflicts from GitHub using web editor using PR with one reviewer
Module 8: Real Project examples - Scenario-based cases
Git clean command to remove file & directory
Undoing changes on existing files
Git Revert Command
Git Reset Command
Git fetch command
Git pull command
The difference git merge & git fetch
Module 9: GitHub Deep Drive - Cherry-pick, tags, rebase & merge in Git
What is Cherry-pick in git?
Lab on Cherry-pick with conflicts in merging
Git tags
Delete tags from local & remote
Git rebase command
The difference between git rebase & merge
Module 10: Apache Maven - Spring Boot Maven Project
Overview of Maven Tool
Maven Lifecycle: Default, Clean & Site
Repositories used in Maven
Lab - Build the Springboot package in AWS Environment
Lab: Location of Artifacts & built package dependencies
Lab: Exploring pom.xml file
Lab: Access the package application
Lab: Exploring dependencies of a built package
Lab: Build Lifecycle
Lab: Lab: Create a Web Application Project Using Maven
Module 11: SonarQube - Code quality tool for better code
About SonarQube tool & its features
SonarQube Installation
Check SonarQube logs & configuration
SonarQube Service & port
Access SonarQube via URL
Set up Maven to build the package
SonarScanner for Maven
Lab - Bad code detected by SonarQube
Lab - Code corrected and rechecked by SonarQube
Module 12: Maven Deploy to Nexus Repository
Configure Nexus Server
Configure Sonatype Nexus Repository Manager
Build Springboot Maven Project
Requirements for Nexus in the pom.xml file
Nexus login credentials
Upload the artifacts to the Nexus repository
Module 13: Jenkins - Automation Software DevOps Tool
About Jenkins tool
Installation of Jenkins
Overview of Jenkins Dashboard
Create First Job in Jenkins
Job - Default User & Workspace Location
Status, Weather & Build Stability of a Job
Search Panel in Jenkins Dashboard
Manage Jenkins - Configure System
Manage Plugins - Install a simple theme plugin
Module 14: Jenkins GitHub Integration
Clone the git project using Shell
Delete workspace before build starts
Use SCM to clone git repository
Module 15: Build Pipeline - Continuous Delivery vs Continuous deployment
Create Jenkins Pipeline Using Build Pipeline
Continuous Delivery vs Continuous deployment
Parallel Jobs in Jenkins Build Pipeline
Module 16: Project - Deploy the WAR file package to a Tomcat Server using Jenkins - CICD
Overview of project
Clone the code from Git Repository
Integrate Maven with Jenkins
Build the Package using Maven Tool
Install & Configure Tomcat Server
Configure a Pipeline using Build Pipeline
Deploy the Package file (.war) to Tomcat Server
Module 17: Jenkins Pipeline - Declarative Pipeline
Jenkins Pipeline - Declarative Pipeline
Create the first Pipeline as code - Create the first Jenkinsfile
Multiple stages in pipeline script
Run commands using pipeline script
Variable/Environment in pipeline script
Define stage-level variables using pipeline script
Build parameters in the pipeline script
Boolean & choice parameters in pipeline script
Input from the user in the pipeline script
Post actions in the pipeline script
Module 18: Configuration Management Using Ansible
Introducing Ansible
Overview of Ansible Architecture
Ansible Components
Guided Exercise: Installing Ansible
Managing Ansible Configuration Files
Guided Exercise: Managing Ansible Configuration Files
Running Ad Hoc Commands
Guided Exercise: Running Ad Hoc Commands
Lab: Deploying Ansible
Module 19: Implementing Playbooks
Implementing Playbooks
Writing YAML Files
Guided Exercise: Writing YAML Files
Implementing Modules
Guided Exercise: Implementing Modules
Implementing Ansible Playbooks
Guided Exercise: Implementing Ansible Playbooks
Lab: Implementing Playbooks
Module 20: Managing Variables and Inclusions in Ansible
Managing Variables
Guided Exercise: Managing Variables
Managing Facts
Guided Exercise: Managing Facts
Managing Inclusions
Guided Exercise: Managing Inclusions
Lab: Managing Variables and Inclusions
Module 21: Implementing Tasks Control in Ansible
Implementing Task Control
Constructing Flow Control
Guided Exercise: Constructing Flow Control
Implementing Handlers
Guided Exercise: Implementing Handlers
Implementing Tags
Guided Exercise: Implementing Tags
Handling Errors
Guided Exercise: Handling Errors
Lab: Implementing Task Control
Module 22: Containerization using Docker
Introduction about containers
Installation of Docker
Create a first container
Fetch container image from docker hub
Run a container in backgroup, interactive with tty terminal
Delete exited dockers using a single command
Get complete details of a running container
Check logs & stats of a running container
Port forwarding
exec, rename & restart the running container
Attach a container
Kill/stop, pause/unpause a container
Create, start, cp command
Export/Import Command in Docker
Create a image from running container
Pull a specific version image from Docker hub
Image history, inspect & remove image
Module 23: Dockerfile
Overview of Dockerfile, layered architecture
Create a centos 7 image using Dockerfile
Overview of LABEL, ENV & RUN Command
Overview of WORKDIR
Copy, add command with their differences
Create a user account with password using dockerfile
CMD Command
SSH to a container
Overview of EXPOSE Command
ENTRYPOINT in Dockerfile
Module 24: Real Time CI/CD DevOps Project | End To End CI/CD Pipeline Project
An Overview of the CI/CD Process
Configure Build Server and Install various tools like Java, Git, Maven, Docker
Checkout & Build the Project using Maven Tool
Install SonarQube on Ubuntu Instance
Add Sonar-maven-plugin
Start SonarQube Service
Check the Code Quality
Overview of Dockerfile to Create a Docker Image
Create a Repository in AWS ECR
Create a Role to Provide Access One AWS Service (CI Server) to another (AWS ECR)
Build the Docker Image using Dockerfile
Push the Docker Image to AWS ECR Repository
Create a CD Server - Continuous Deployment
Pull & Execute the Docker Image from ECR to CD Server
Recap the Entire CICD Process
Module 25: Real-Time CI/CD DevOps Project: End-to-End CI/CD Pipeline using Jenkins
Install a Jenkins Server (CI Server)
Configure Jenkins
Create a Jenkins pipeline to checkout and build the project
Install SonarQube Server using Docker container
Install plugins and add Sonar login credentials
Configure SonarQube on Jenkins Server
Pipeline for SonarQube Scanner for Jenkins
Pipeline for success or aborted due to quality gate failure
Configure a webhook
Pipeline that uses a Dockerfile to build a Docker image
Add Plugins - CloudBees AWS, ECR, Docker
Create an IAM User to have access to AWS ECR and add it to Jenkins Server
Pipeline to Push the Docker Image to AWS ECR
Configure SES to send an email notification
Integrate SES with Jenkins using pipeline
Pipeline-Receive an Email Notification after the success or failure of Jenkins Pipeline
Module 26: Orchestration using Kubernetes
What is Kubernetes
Why do we use Kubernetes?
Monolithic approach for developing applications.
Microservices Vs. Monolithic
Kubernetes Gateway API
Evolution of Containers, Dockers & VMs
Microservices running as containers
Kubernetes - Orchestration or container management tool
Features of Kubernetes
Set up a Kubernetes Cluster in an AWS Environment
Module 27: Kubernetes Concepts - Cluster types, Minikube Server, YAML, Pod, Kubelet, Ports
Kubernetes Cluster
Types of Cluster
All-in-one (Single Node Cluster)
Single-node, single-master, and multi-worker node clusters.
Single-Node etcd, multi-Master, and Multi-Worker Node Cluster.
About Minikube
Installation of Minikube Server
Create the first POD using manifest file written in YAML Language
Kubelet commands
Check logs of the container
Create multiple containers in a POD
Kubernetes Annotations
Variables in the YAML file
Defining Ports
Module 28: Labels & Selectors in Kubernetes
Labels and Selectors
Commands for managing labels & selectors
Declarative vs. Imperative Kubernetes commands
Two types Selectors
Equality Based
Set based
Practice Lab - Labels & Selectors
Practice Lab - Assign a label to the running POD
Practice Lab - Search the pod with equality & set-based
Node Selector
Lab - Create a pod on a specific node
Module 29: Scaling and Replication in Kubernetes
What is ReplicationController?
Features of RC
Practice Lab - Create Replicas of POD using RC
Practice Lab - Recreate the POD, if it crashes, fails, or terminated
Scale up & scale down the POD as the load increases
Practice Lab - Scale up & scale down the POD
What is ReplicaSet?
Difference between ReplicationController & ReplicaSet
Practice Lab - Create Replicas of POD using ReplicaSet
Practice Lab - Use set-based match expressions in RS
Module 30: Deployment & Rollback
Overview of Deployment and Rollback
Manifest for a POD with one container using the deployment object
Lab: Launch an application with two PODs using the deployment object
Lab: Using the deployment object, upgrade an application from version 1 to version 2
Lab: Roll back the application to the previous version
Lab: Roll back the application to any specific version
Module 31: Real-time project: Deploy an Appl to a Kubernetes cluster using Jenkins CI/CD
Real-time CI/CD DevOps project: Deploy an application to a Kubernetes cluster using Jenkins.