Your DevOps with AWS Journey Starts Here
A focused AWS DevOps track for learners who want Linux, Git, Maven, Jenkins, Docker, Kubernetes, Terraform, Ansible, monitoring, AWS services, and a portfolio-ready capstone project.
Introduction to DevOps
- What is Software Application Development?
- SDLC (Software Development Life Cycle)
- What is DevOps?
- Who can learn DevOps?
- What are the prerequisites to learn DevOps?
- DevOps Market Trends
- Why are DevOps skills in high demand across industries?
- History and Evolution of DevOps
- Traditional IT vs Agile vs DevOps
- DevOps Core Principles: CALMS (Culture, Automation, Lean, Measurement, Sharing)
- DevOps Lifecycle Overview: Plan, Develop, Build, Test, Release, Deploy, Operate, Monitor
Linux Basics
- What is an operating System? What is the difference between Windows and Linux?
- Introduction to Linux and Its Distributions (Ubuntu, CentOS, RHEL)
- Basic Linux Commands (ls, cd, pwd, mkdir, rm, etc.)
- File Permissions, Ownership, chmod, chown, and umask
- User and Group Management (useradd, groupadd, passwd)
- File and Directory Management (cp, mv, find, locate, du, df)
- Process Management (ps, top, kill, nice, jobs, bg, fg)
- Package Management (APT/YUM/DNF - install, remove, update packages)
- Networking Commands (ip, ping, netstat, ss, curl, wget)
- Shell Scripting Basics (variables, conditions, loops, functions)
- System Services and Logs (systemctl, journalctl, log files in /var/log)
Benefits and Business Value of DevOps
- Why DevOps? (Faster Delivery, Reduced Failures)
- DevOps Impact on Software Delivery
Introduction to Git and Version Control
- What is Version Control?
- Centralized vs. Distributed Version Control
- What is Git? Why use Git?
- Installing Git (Windows, macOS, Linux)
- Git vs GitHub vs GitLab vs Bitbucket
- Initializing a Git Repository
- Checking the Status
- Git Add, Commit, and Log
- Understanding the Working Directory, Staging Area, and Repository
- Viewing History with git log
Branching and Merging
- What is a Branch?
- Creating, Switching, and Deleting Branches
- Merging Branches
- Fast-forward vs Three-way Merge
- Merge Conflicts: How to resolve them
- Visualizing Branches with git log --graph
Remote Repositories and Collaboration Workflow
- Setting up GitHub or GitLab
- Cloning Repositories
- Adding Remote Repositories
- Pushing and Pulling Changes
- Fetch vs Pull
- Tracking and Untracking Files
- Forking and Pull Requests
- Git Workflow Models (Feature Branch, GitFlow, Trunk-Based)
- Code Review with Pull Requests
- Best Practices for Team Collaboration
Undoing Changes
- git checkout vs git restore
- git reset (soft, mixed, hard)
- git revert
- Recovering Lost Commits
- Stash: Saving Temporary Changes
Maven: Build Tool
- What is Apache Maven?
- History and Evolution of Build Tools
- Maven vs Ant vs Gradle
- Installing Maven (Windows, macOS, Linux)
- Verifying Maven Installation
- What is the Build Process?
- Understanding the Maven Standard Directory Layout
- What is pom.xml?
- Basic Elements of a POM (Project Object Model)
- GroupId, ArtifactId, Version (GAV)
- Project Lifecycle Overview
- Build Lifecycles: Default, Clean, Site
- Core Phases: validate, compile, test, package, install, deploy
- Maven Goals vs Phases
- Running Maven Goals from CLI
Maven Dependencies, Plugins and Goals
- What is a Dependency?
- Adding Dependencies to pom.xml
- Transitive Dependencies
- Managing Conflicts (Dependency Mediation)
- Dependency Scopes (compile, test, provided, runtime, system)
- What are Maven Plugins?
- Build Plugins vs Reporting Plugins
- maven-compiler-plugin
- maven-surefire-plugin
- maven-jar-plugin
- maven-clean-plugin
- Executing Plugin Goals
Jenkins and CI/CD Foundation
- What is CICD (Continuous Integration and Continuous Delivery/Deployment)?
- What is the Need for Jenkins?
- What is Jenkins?
- Jenkins History and Evolution
- Features of Jenkins
- Jenkins vs Other CI/CD Tools (GitLab CI, GitHub Actions, CircleCI)
- Jenkins Use Cases in DevOps
Installing Jenkins and Plugins
- System Requirements
- Installing Jenkins on Linux (Ubuntu/CentOS)
- Installing Jenkins on Windows
- Installing Jenkins on Docker
- Running Jenkins as a Service
- Initial Setup and Admin Configuration
- Installing Plugins During Setup
- Must-Have Plugins for DevOps: Git, Maven, Pipeline, Email Extension, Docker
- Installing and Managing Plugins
- Plugin Compatibility and Updates
Jenkins UI, Jobs and Pipeline Basics
- Exploring the Jenkins Dashboard
- Creating Your First Job (Freestyle Project)
- Understanding Build Triggers
- Build Steps and Post-build Actions
- Build History and Console Output
- What is a Jenkins Pipeline?
- Declarative vs Scripted Pipelines
- Creating a Simple Pipeline (UI and Jenkinsfile)
- Pipeline Stages, Steps, and Agents
- Running and Debugging Pipelines
Jenkinsfile Deep Dive
- Writing Jenkinsfiles from Scratch
- Parameters and Environment Variables
- Using tools, when, input, and post blocks
- Parallel Stages and Matrix Builds
- Shared Libraries and Reusability
Jenkins with Docker, Git and Build Tools
- Running Jenkins in Docker
- Using Docker in Pipelines (Docker Plugin)
- Building and Pushing Docker Images with Jenkins
- Docker Inside Jenkins vs Jenkins Inside Docker
- Jenkins Master and Agent (Node) Architecture
- Distributed Builds
- Connecting Jenkins to Git/GitHub/GitLab
- Webhooks for Triggering Builds on Push
- Building on Pull Request Events
- Git Credentials and SSH Key Setup
- Jenkins with Maven
- Jenkins with Gradle
- Using Ant (if needed)
- Managing Dependencies and Artifacts
Reporting, Deployment, Cloud and Security
- Email Notifications Setup
- Slack/MS Teams Integration
- Test Reports with JUnit
- Code Coverage Reports
- Publishing Artifacts
- Automating Build-Test-Deploy Pipelines
- Rolling Deployments with Jenkins
- Deployment to Tomcat, EC2, or Kubernetes
- Blue/Green and Canary Deployments (basic intro)
- Jenkins on AWS EC2
- Jenkins with EFS/S3 for storage
- Jenkins on Kubernetes (Jenkins X, Helm)
- Jenkins with Terraform or Ansible Integration
- Managing Users and Roles
- Matrix-Based Authorization
- Setting up Credentials Securely
- Secrets Management (Vault, Jenkins Credentials Plugin)
- Jenkins Backup Strategy
- Restoring Jenkins
- Log Rotation and Cleanup
- Upgrading Jenkins and Plugins
Docker - Containerization Tool
- What is a Virtual server?
- What is the difference between a physical server and a virtual server?
- What is the difference between a virtual server and a container?
- What is Docker?
- Why Docker? Benefits Over VMs
- Docker Architecture (Client, Daemon, Images, Containers)
- Understanding Containers vs Images
- Installing Docker (Linux, macOS, Windows)
- Running Your First Container
- docker run Command Breakdown
- Listing and Stopping Containers
- Docker Help and Command Line Basics
- Removing Containers and Images
Docker Images, Dockerfile, Storage and Networking
- Container Lifecycle
- Detached Mode vs Interactive Mode
- Accessing Containers (docker exec, docker attach)
- Environment Variables in Containers
- Volumes and Persistent Storage
- Pulling Images from Docker Hub
- Inspecting and Tagging Images
- Removing, Saving, and Loading Images
- Difference Between Official and Custom Images
- What is a Dockerfile?
- Dockerfile Instructions: FROM, RUN, COPY, CMD, ENTRYPOINT, etc.
- Building a Custom Image (docker build)
- Best Practices for Writing Dockerfiles
- Multi-Stage Builds
- Volumes vs Bind Mounts
- Docker Default Networks (bridge, host, none)
- Creating Custom Networks
- Network Inspection and Troubleshooting
- Docker Compose and docker-compose.yml File Structure
Docker Registry and CI/CD
- Docker Hub and Docker Registry
- Pushing and Pulling from Docker Hub
- Setting Up a Private Docker Registry
- Image Tagging Strategies (latest, semantic versioning)
- Automating Builds with Webhooks
- Docker with Jenkins/GitHub Actions/GitLab CI
- Building Images in CI Pipelines
- Scanning Images for Vulnerabilities (Trivy, Snyk)
- Caching and Optimizing Build Times
- Deploying Containers in CI/CD Pipelines
Kubernetes
- What is Kubernetes?
- Why Kubernetes? Evolution from VMs to Containers to K8s
- Key Features and Use Cases
- Kubernetes vs Docker Swarm vs ECS vs Nomad
- CNCF and the Cloud-Native Ecosystem
- Kubernetes Cluster Components
- Control Plane: API Server, Scheduler, Controller Manager, etcd
- Worker Nodes: Kubelet, Kube-proxy, Container Runtime
- Pods, Nodes, and Containers
- High Availability Architecture
- Kubernetes Setup Options: Minikube, kubeadm, EKS, GKE, AKS
- Installing kubectl and CLI Tools
- Connecting to a Cluster
- Exploring the Kubernetes Dashboard
Kubernetes Objects and Operations
- Creating Pods with YAML
- Pod Lifecycle and Status
- Viewing Logs and Exec into Containers
- Init Containers and Multi-Container Pods
- ReplicaSets and Deployments
- Rolling Updates
- Rollbacks and Revisions
- Scaling Deployments Manually and Automatically
- Services: ClusterIP, NodePort, LoadBalancer, ExternalName
- DNS in Kubernetes
- Ingress and Ingress Controllers
- Persistent Volumes (PV) and Claims (PVC)
- StatefulSets and Persistent Storage
- Helm - Kubernetes Package Manager
- Autoscaling and Resource Management
- Prometheus + Grafana Setup for Monitoring
- Logging with EFK Stack
Terraform - Infrastructure Management Tool
- What is IT infrastructure?
- What is Infrastructure as Code?
- Why Terraform? Features and Use Cases
- Terraform vs Other IaC Tools (CloudFormation, Pulumi, Ansible)
- Terraform Architecture and Workflow
- Supported Providers Overview (AWS, Azure, GCP, Kubernetes)
- Installing Terraform (Windows/Linux/macOS)
- Terraform CLI Basics
- First Terraform Configuration - Provisioning EC2 on AWS
- Terraform Workflow: Init, Plan, Apply, Destroy
- Hands-on: Your First Terraform Project
Terraform Configuration Language and State
- Overview of HCL Syntax
- Resources, Providers, and Variables
- Data Sources and Outputs
- Local Values and Expressions
- Input Validation and Descriptions
- Defining Input Variables
- Variable Types and Validation Rules
- Using Environment Variables and terraform.tfvars
- Output Values and Dependencies
- Sensitive Data Handling
- What is Terraform State?
- Local vs Remote State Files
- State Locking and State File Structure
- Terraform Workspaces (Managing Environments)
Terraform Providers, Modules and Cloud
- What is a Provider?
- Provider Block Configuration
- Using Multiple Providers (e.g., AWS + Kubernetes)
- Resources - Basics and Arguments
- Data Sources - Referencing Existing Infrastructure
- What are Modules?
- Creating and Reusing Modules
- Organising Code with Root and Child Modules
- Using Public Modules from the Terraform Registry
- Setting up Terraform with AWS Credentials
- Creating VPC, Subnets, Security Groups, and EC2 Instances
- Deploying S3 Buckets, RDS, and Load Balancers
- Remote State and Backend Configuration
- State Locking with DynamoDB (AWS)
- Terraform Cloud and Enterprise
- Hands-on: Deploy via Terraform Cloud
Ansible
- What is Configuration Management?
- Introduction to Ansible
- Ansible vs Other Tools (Puppet, Chef, Salt)
- Use Cases and Benefits of Ansible
- Architecture Overview - Control Node and Managed Nodes
- Installing Ansible (Linux, Mac, Windows via WSL)
- Understanding Ansible Inventory (Static and Dynamic)
- Setting up SSH Key Authentication
- Running Your First Ad-Hoc Command
- Modules and Ad-Hoc Commands
- Playbooks - Structure and YAML Syntax
- Tasks, Handlers, and Tags
- Variables - Types and Precedence
- Facts and setup Module
- Writing and Running Playbooks
- Variables and Templates
- Roles and Reusability
- Ansible Inventory Management
- Error Handling and Debugging
- Ansible Vault - Managing Secrets
- Advanced Playbook Techniques
Ansible Tower (AWX)
- What is Ansible Tower/AWX?
- Installing and Setting Up AWX
- Managing Projects, Inventories, and Job Templates
- Role-Based Access Control (RBAC)
- Workflow Automation and Notifications
- App deployment from Git
- Secure access with Vault and RBAC
- CI/CD pipeline integration
Grafana + Prometheus
- Introduction to Observability
- What is Observability? (Metrics, Logs, Traces)
- Monitoring vs Observability
- Why Grafana and Prometheus?
- Overview of the Prometheus + Grafana Ecosystem
- Where they fit in the DevOps/Cloud Stack
Getting Started with Prometheus
- What is Prometheus?
- Prometheus Architecture (TSDB, Exporters, Pull-based model)
- Installing Prometheus
- Prometheus Configuration File (prometheus.yml)
- Running Prometheus and Exploring the UI
Introduction to AWS and Cloud Computing
- What is a Data Centre? What is Cloud?
- What are cloud providers (AWS, Azure, GCP, Oracle cloud, IBM cloud, etc.)
- Benefits of cloud?
- What is Cloud Computing?
- AWS Global Infrastructure (Regions, AZs, Edge Locations)
- AWS Free Tier and Account Setup
- AWS Management Console and CLI
Core AWS Services - Compute
- Amazon EC2 - Instance Types, Launch, and SSH Access
- AMI, EBS Volumes, Snapshots
- EC2 Pricing Models (On-Demand, Reserved, Spot)
- Auto Scaling and Elastic Load Balancing (ELB)
Core AWS Services - Storage
- Amazon S3 - Buckets, Objects, Storage Classes
- Lifecycle Policies and Versioning
- S3 Permissions and Bucket Policies
- Amazon EFS and Amazon FSx
- S3 Transfer Acceleration and Static Website Hosting
Core AWS Services - Networking
- Amazon VPC - Subnets, Route Tables, NACLs, Security Groups
- Internet Gateway, NAT Gateway, VPC Peering
- PrivateLink and Transit Gateway
- Elastic IPs and DNS with Route 53
- VPC Endpoints
AWS IAM, Databases, Monitoring and Serverless
- IAM Users, Groups, Roles, and Policies
- Policy JSON - Structure and Examples
- MFA and IAM Best Practices
- Resource-Based vs Identity-Based Policies
- AWS Organizations and Service Control Policies (SCPs)
- Amazon RDS (MySQL, PostgreSQL, etc.)
- AWS CLI
- Amazon CloudWatch - Logs, Metrics, Alarms
- AWS CloudTrail - Audit and Governance
- AWS Lambda - Functions and Triggers
- API Gateway - REST and HTTP APIs
Project Overview
- End-to-End DevOps Pipeline for a Sample Web App (Java, Node.js, Python, etc.)
Version Control
- Store Code in GitHub/GitLab
- Branching Strategy (main/dev)
Build and Test
- Build using Maven/Gradle
- Code Quality with SonarQube
- Unit Testing
CI/CD Integration
- Configure Jenkins
- Automated Build and Deployment
Containerization
- Create Dockerfile and Build Docker Image
- Push Image to Docker Hub
Orchestration and Deployment
- Deploy App on Kubernetes Cluster (GKE/EKS/Minikube)