The Ultimate DevOps Bootcamp Syllabus
Complete DevOps Bootcamp Curriculum in Detailed
Table of contents
- DevOps Bootcamp Curriculum:
- Lesson 01: DevOps Bootcamp Overview
- Lesson 02: DevOps Overview
- Lecture 01: What is an OS and How Does it Work?
- Lesson 02: Virtualization
- Lesson 03: Package Manager - Installing Software
- Lesson 04: Working with Vim Editor
- Lesson 05: Users & Permissions
- Lesson 06: Linux File System
- Lesson 07: Basic Linux Commands
- Lesson 08: Shell Scripting
- Lesson 09: Environment Variables
- Lesson 10: Networking
- Lesson 11: SSH - Secure Shell
- Lesson 12: Introduction to Version Control and Git
- Lesson 13: Build Tools and Package Managers
- Lesson 14: Cloud & Infrastructure as a Service Concepts
- Lesson 15: Artifact Repository Manager
- Lesson 16: Introduction to Containers
- Lesson 17: Build Automation and Jenkins
- Lesson 18: Introduction to Amazon Web Services
- Lesson 19: Introduction to Kubernetes
- Lesson 20: Introduction to Terraform
- Lesson 21: Core Concepts and Syntax of Ansible
DevOps Bootcamp Curriculum:
Lesson 01: DevOps Bootcamp Overview
Lesson 02: DevOps Overview
What is DevOps?
Roles and Responsibilities of a DevOps Engineer
How DevOps fits in the Software Development Lifecycle
Lecture 01: What is an OS and How Does it Work?
Tasks of an OS
How an OS is Constructed
Differences Between Unix, Linux, Windows, and MacOS
Lesson 02: Virtualization
Introduction to Virtual Machine
Setup a Linux Virtual Machine
Lesson 03: Package Manager - Installing Software
What is a Package Manager and Software Repositories?
Options for Installing Software on Linux and How it Works
APT
APT vs APT-GET
SNAP
Ubuntu Software Center
YUM
Lesson 04: Working with Vim Editor
What is Vim?
Important Vim Commands
Lesson 05: Users & Permissions
Linux Accounts
Users, Groups & Permissions
User Management in Practice
File Ownership & Permissions
Modifying Permissions
Lesson 06: Linux File System
Lesson 07: Basic Linux Commands
Introduction to Command Line Interface
Essential Linux Commands
Directory Operations
Navigating the File System
Working with the File System (Create folders, list files, rename, remove files, etc.)
Execute Commands as Superuser
Pipes, Redirects, Less, Grep
Lesson 08: Shell Scripting
Shell vs sh vs Bash
Write & Execute a Simple Script
Writing Bash Scripts
Variables
Conditional Statements
Basic Operators
Passing Arguments to a Script
Read User Input
Shell Loops
Functions
Lesson 09: Environment Variables
What are Environment Variables and How to Access Them
Create, Delete, and Persist Environment Variables
Understanding the PATH Environment Variable
Lesson 10: Networking
How Computer Networks Work
LAN, Switch, Router, Subnet, Firewall, Gateway
IP Address and Port
DNS and DNS Resolution
Useful Networking Commands
Lesson 11: SSH - Secure Shell
What is SSH and How it Works
SSH in Action
Create Remote Server on Cloud
Generate SSH Key Pair
Execute a Bash Script on a Remote Machine
Lesson 12: Introduction to Version Control and Git
Basic Concepts of Git
Setup Git Repository (Remote and Local)
Working with Git
git status
,git commit
,git add
,git push
Initialize Git Project Locally
Concept of Branches
Merge Requests
Deleting Branches
Avoiding Merge Commits (rebase)
Resolving Merge Conflicts
Ignoring Certain Files (.gitignore)
Saving Work-in-Progress Changes (git stash)
Going Back in History (git checkout)
Undoing Commits (git revert, git reset)
Merging Branches
Git for DevOps
Lesson 13: Build Tools and Package Managers
What are Build Tools and Package Managers?
Building an Artifact
Running the Application Artifact
Publishing the Application Artifact to an Artifact Repository
Build Tools for Java (Gradle and Maven)
Dependency Management in Software Development
Package Manager in JavaScript Applications - Build and Run Applications in JS
Build Tools & Docker
Relevance of Build Tools for DevOps Engineers
Lesson 14: Cloud & Infrastructure as a Service Concepts
Setup Server on DigitalOcean (Droplet)
Install Java on Cloud Server
Deploy and Run an Application on Cloud Server
Create a Linux User to Login to Server (Instead of Using Root User)
Lesson 15: Artifact Repository Manager
What is an Artifact Repository Manager?
Install and Run Nexus on Cloud Server
Different Repository Types (Proxy, Hosted, etc.)
Different Repository Formats (Maven, Docker, NPM, etc.)
Upload Jar File to Nexus (Maven and Gradle Projects)
Nexus API and Repository URLs
Blob Stores
Browsing Components - Components vs Assets
Cleanup Policies and Scheduled Tasks
Lesson 16: Introduction to Containers
What is a Container?
Docker Components and Architecture
Docker vs. Virtual Machine
Main Docker Commands
Debugging a Docker Container
Demo Project Overview - Docker in Practice
Developing with Containers
Docker Compose - Running Multiple Services
Dockerfile - Building Our Own Docker Image
Private Docker Repository - Pushing Our Built Docker Image into a Private Registry on AWS
Deploying a Containerized App
Docker Volumes - Persist Data in Docker
Volumes Demo - Configure Persistence for Our Demo Project
Docker Best Practices
Docker & Nexus
Create Docker Images Repository on Nexus and Push/Pull Docker Image from/to Nexus Repository Manager
Deploy Nexus as Docker Container
Lesson 17: Build Automation and Jenkins
What is Build Automation? What is Jenkins?
Install Jenkins on Cloud Server (Docker vs Server Install)
Jenkins Plugins
Installing Build Tools in Jenkins
Jenkins Basics Demo
Create Freestyle Job
Configure Git Repository
Run Tests and Build Java Application
Docker in Jenkins
Make Docker Commands Available in Jenkins
Build Docker Image
Push to DockerHub Repo
Push to Nexus Repo
Jenkins Pipeline (Use Cases)
Create a Simple Pipeline Job
Full Jenkinsfile Syntax Demo
Create a Full Pipeline Job
Build Java App
Build Docker Image
Push to Private DockerHub
Create a Multi-Branch Pipeline Job
Credentials in Jenkins
Jenkins Shared Library
WebHooks - Trigger Jenkins Jobs Automatically
Versioning Application in Continuous Deployment
Concepts of Versioning in Software Development
Increment Application Version from Jenkins Pipeline
Set New Docker Image Version from Jenkins Pipeline
Commit Version Bump from Jenkins Pipeline
Lesson 18: Introduction to Amazon Web Services
Create an AWS Account
Identity & Access Management (IAM) - User, Groups, and Permissions
Regions and Availability Zones
Virtual Private Cloud (VPC) - Manage Private Network on AWS
Subnets
Security Groups
Internet Gateway
Route Table
CIDR Blocks Explained
Introduction to Elastic Compute Cloud (EC2)
Create an EC2 Instance
Run Web Application on EC2 Using Docker
AWS Command Line Tool
Install and Configure AWS CLI
Create AWS Components with AWS CLI
Automate Deploying from Jenkins Pipeline to EC2 Instance
Using
docker run
Using
docker-compose
Real-Life Example of Dynamically Setting New Image Version in Docker-Compose
SSH Agent Plugin and SSH Credential Type in Jenkins
Lesson 19: Introduction to Kubernetes
Understand the Main Kubernetes Components
- Node, Pod, Service, Ingress, ConfigMap, Secret, Volume, Deployment, StatefulSet
Kubernetes Architecture
Minikube and kubectl - Local Setup
Main Kubectl Commands - K8s CLI
- Create and Debug Pod in a Minicluster
Kubernetes YAML Configuration File
Demo Project: MongoDB and MongoExpress
Organizing Your Components with K8s Namespaces
Kubernetes Service Types
Making Your App Accessible from Outside with Kubernetes Ingress
Persisting Data in Kubernetes with Volumes
- Persistent Volume, Persistent Volume Claim, Storage Class
ConfigMap and Secret Kubernetes Volume Types
Deploying Stateful Apps with StatefulSet
Deploying Kubernetes Cluster on a Managed Kubernetes Service (K8s on Cloud)
Helm - Package Manager of Kubernetes
Helm Demo: Install a Stateful Application on Kubernetes Using Helm
Demo: Deploy App from Private Docker Registry
Extending the Kubernetes API with Operator
Secure Your Cluster - Authorization with Role-Based Access Control (RBAC)
Microservices in Kubernetes
Introduction to Microservices
Demo Project: Deploy Microservices Application
Demo Project: Create Common Helm Chart for Microservices
Demo Project: Deploy Microservices with Helmfile
Production & Security Best Practices
AWS & Kubernetes
AWS Container Services: Overview (ECR, ECS, EKS, Fargate)
Create an EKS Cluster with AWS Management Console (UI)
Create Cluster VPC, Cluster Roles
Use CloudFormation Stack
EC2 Worker Nodes
Configure Kube Context to Connect to the Cluster
Configure Autoscaling in EKS Cluster
Create Fargate Profile for EKS Cluster
Create an EKS Cluster with eksctl (the Easy Way)
AWS & Kubernetes & Jenkins & Docker
CI/CD
Configure kubectl Inside Jenkins
Configure Kube Context in Jenkins
Install aws-iam-authenticator in Jenkins
Complete Jenkins Pipeline - Deploy to EKS Using
kubectl
Complete Jenkins Pipeline - Build and Push Docker Image to ECR and Deploy to EKS
Complete Jenkins Pipeline - Deploy to LKE Using Kubernetes CLI Plugin and Kubeconfig File
Lesson 20: Introduction to Terraform
What is Terraform? How it Works
Terraform Architecture
Install Terraform & Setup Terraform Project
Providers in Terraform
Resources & Data Sources
Change & Destroy Terraform Resources
Terraform Commands
Terraform State
Output Values
Variables in Terraform
Environment Variables in Terraform
Create Git Repository for Local Terraform Project
Terraform & AWS
Automate Provisioning EC2 Server with Terraform
Provisioners in Terraform
Modularize the Demo Project
Terraform & AWS & Kubernetes
Automate Provisioning EKS Cluster with Terraform
Use Existing Modules from Terraform Registry
Create VPC
Provision EKS Cluster
Terraform & AWS & Jenkins - Complete CI/CD
Complete CI/CD with Terraform
Configure Terraform in Jenkins
Automate Provisioning EC2 Instance from Jenkins Pipeline and Deploy the Application with Docker-Compose
Remote State in Terraform
Terraform Best Practices
Lesson 21: Core Concepts and Syntax of Ansible
Introduction to Ansible
Install & Configure Ansible
Setup Managed Server to Configure with Ansible
Ansible Inventory
Ansible Ad-Hoc Commands
Configure AWS EC2 Server with Ansible
Managing Host Key Checking and SSH Keys
Ansible Tasks, Play & Playbook
Ansible Modules
Ansible Collections & Ansible Galaxy
Ansible Variables - Make Your Playbook Customizable
Troubleshooting in Ansible
Conditionals
Privilege Escalation
Ansible Configuration - Default Inventory File
Learn Most Common Ansible Modules with Hands-On Demos
Project: Deploy Node.js Application
Project: Deploy Nexus
Configure Servers with Different Linux Distributions on AWS and Digital Ocean Platforms
Install Tools on a Server, Configure Applications, Work with a File System, Move Static Files Between Machines, etc.
Map and Translate Shell Scripts and Commands into Ansible Playbooks to Automate Various Common Tasks
More Advanced Topics & Integrations with Other Technologies
Dynamic Inventory for EC2 Servers
Ansible Roles - Make Your Ansible Content More Reusable and Modular for Better Maintenance
Project: Ansible & Terraform
Project: Run Docker Applications
Project: Deploying Applications in Kubernetes
Project: Run Ansible from Jenkins Pipeline