DevOps

Infrastructure Setup of DevOps

  • EC2 Walkthrough
  • Installation of DevOps Tools on cloud
    • Git
    • Docker
    • Selenium
    • Maven
    • Jenkins
    • Puppet
    • Ansible
    • Kubernetes
    • Nagios

Introduction

  • What is Software Development?
  • Software Development Life Cycle
  • Traditional Models used for SDLC
  • Why DevOps?
  • What is DevOps?
  • DevOps Lifecycle
  • DevOps Tools

Software Version Control

  • 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

Exercises –

  • Git Life cycle Commands
  • Pushing Code to Github
  • Stashing Code in git
  • Creating, Deleting Git Branches
  • Reverting a Push to GitHub
  • Merging branches using git merge
  • Merging branches using git rebase
  • Resolving merge conflicts using git merge tool

Containerization using Docker - Part I

  • Introduction to 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

Exercises –

  • Common Docker Operations
  • Creating a DockerHub Account
  • Committing Changes to a Container
  • Pushing container to DockerHub
  • Creating Local Image Repository
  • Building an Image using Dockerfile

Containerization using Docker - Part II

  • What are Docker Volumes
  • Deploying a Multi-Tier Application using Docker Network
  • Using Docker Compose to deploy containers
  • What is Container Orchestration
  • Container Orchestration Tools
  • Introduction to Docker Swarm
  • Deploying a 2-Node Cluster using Docker Swarm

Exercises -

  • Creating Docker Volumes
  • Using Docker Compose to deploy multiple containers
  • Deploying a Multi Node Cluster using Docker Swarm
  • Deploying a multi-service app on Docker Swarm

Configuration Management using Puppet

  • Need of 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

Exercises -

  • Setting up Master Slave on AWS
  • Testing Connection of nodes with Puppet
  • Creating a Manifest
  • Deploying Manifest on Node
  • Creating a Module
  • Deploying sample software on nodes using Puppet Modules and Manifests
  • Implementing a File Server Module on Puppet

Configuration Management using Ansible

  • What is Ansible?
  • Ansible vs Puppet
  • Ansible Architecture
  • Setting up Master Slave using Ansible
  • Ansible Playbook
  • Ansible Roles
  • Applying configuration using Ansible

Exercises -

  • Installing Ansible on AWS
  • Creating a Playbook using YAML
  • Creating an Ansible Role
  • Using Roles in Playbook

Continuous Testing using Selenium

  • What is Continuous Testing?
  • Introduction to Selenium
  • What is Maven?
  • Using Maven with Selenium
  • Creating Test Cases with Selenium
  • Running Test Cases on Chromium Web Driver
  • What is Headless Mode?

Exercises -

  • Using Maven to import dependencies in Eclipse
  • Create Sample Test Case for a website using Selenium
  • Implementing a headless test in selenium using Chrome WebDriver

Continuous Integration using Jenkins

  • Introduction to Continuous Integration
  • Jenkins Master Slave Architecture
  • Understanding CI/CD Pipelines
  • Creating an end to end automated CI/CD Pipeline

Exercises -

  • Creating a Jenkins Master Slave on AWS
  • Installing Plug-ins in Jenkins
  • Creating Jenkins Builds
  • Creating Scheduled Builds
  • Triggering Jobs using Git Web Hooks
  • Using the Pipeline Plugin In jenkins

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
  • Case Study – Kubernetes Architecture

Exercises -

  • Setting up Kubernetes using kubeadm
  • Installing Kubernetes using kops and GCK
  • Creating a Deployment
  • Creating Services
  • Creating an Ingress
  • Demonstrating the use of Ingress, services and deployments together

Continuous Monitoring using Nagios

  • What is Continuous Monitoring
  • Introduction to Nagios
  • Nagios Architecture
  • Monitoring Services in Nagios
  • What are NRPE Plugins
  • Monitoring System Info using NRPE plugins

Exercises -

  • Installing Nagios
  • Monitoring of different servers using Nagios