Devops
DevOps is a software development methodology that combines software development (Dev) and IT operations (Ops) practices to enhance the speed and quality of software delivery. It is a culture, a set of principles, and a collection of practices that aim to reduce the gap between software development and operations teams.
DevOps seeks to automate and streamline the entire software delivery process, from code development and testing to deployment and maintenance. By fostering collaboration between development and operations teams, DevOps aims to increase efficiency and agility, reduce errors, and improve the overall quality of software products.
Infrastructure Setup
- Lab setup-AWS Account creation
- EC2 and LMS Walkthrough
Introduction to DevOps
- What is Software Development?
- Software Development Life Cycle
- Traditional Models for SDLC
- Why DevOps?
- What is DevOps?
- DevOps Lifecycle
- DevOps Tools
Version Control with Git
- What is Version Control?
- Types of Version Control System
- Introduction to SVN
- Introduction to Git
- Git Lifecycle
- Common Git Commands
- Working with Branches in Git
- Merging Branches
- Resolving Merge Conflicts
- Git Workflow
Containerization Using Docker
- Understanding Docker Lifecycle
- Components of Docker Ecosystem
- Common Docker Operations
- Creating a DockerHub Account
- Committing changes in a Container
- Pushing a Container Image to DockerHub
- Creating Custom Docker Images using Dockerfile
- What are Docker Volumes?
- Deploying a Multi-tier Application Using Docker Network
- Using Docker Compose to Deploy Containers
Configuration Management using Puppet
- Need for Configuration Management
- Configuration Management Tools
- What is Puppet
- Puppet Architecture
- Setting up Master-Slave using Puppet
- Puppet Manifests
- Puppet Modules
- Applying configuration using Puppet
- Puppet File Server
Configuration Management using Ansible
- What is Ansible?
- Ansible vs Puppet
- Ansible Architecture
- Setting up Master-Slave using Ansible
- Ansible Roles
- Applying configuration using Ansible
Continuous Testing using Selenium
- What is Continuous Testing?
- What is Maven?
- Introduction to Selenium
- Running Test Cases on Chromium Web Driver
- What is Headless Mode?
Continuous Integration with Jenkins
- Introduction to Continuous Integration
- Jenkins Master-Slave Architecture
- Understanding CI/CD Pipelines
- Creating an end-to-end automated CI/CD Pipeline
Continuous Orchestration Using Kubernetes
- Introduction to Kubernetes
- Docker Swarm vs Kubernetes
- Kubernetes Architecture
- Deploying Kubernetes using Kubeadms
- Alternate ways of deploying Kubernetes
- YAML Files
- Creating a Deployment in Kubernetes using YAML
- Services in Kubernetes
- Ingress in Kubernetes
- What are volumes
- Types of volumes
Continuous Monitoring using ELK
- Agenda
- What is ELK?
- Components of ELK
- ELK Flow
- Features of ELK
- ELK installation
Terraform Modules & Workspaces
- What is Infrastructure as a code
- IaC vs Configuration Management
- Introduction to Terraform
- Installing Terraform on AWS
- Basic Operations in Terraform: init, plan, apply, destroy
- Terraform Code Basics
- Deploying an end-to-end architecture on AWS using Terraform