DEVOPS BOOT CAMP

Learn DevOps from the Experts, Classroom Training, experiential learning through hands-on labs, projects, and case studies. Get ready for the real world.

DevOps Boot Camp

Setup CI/CD environment with GIT SVN Jenkins Maven Ansible Docker Kubernetes Terraform – 8 Days

8 Day Program

Duration   - 8  Days, Delivery mode – Classroom, Instructor Led, Bootcamp

This course will enable you to design Scalable, Elastic, Secure and Highly available applications on AWS. In this course, we cover architecture patterns for common solutions running on AWS, including Web Applications, Batch Processing and Hosting Internal IT Applications.

Overview: DevOps describes a culture and set of processes that enables development and operations teams to rapidly complete software development projects. It helps organizations to develop and improve products quickly and efficiently than what they can with legacy software development models. Learn and Master the DevOps by setting up CI/CD pipelines using SVN Git, Jenkins, Maven, Ansible, Docker, Terraform and Kubernetes on AWS in real time.

Prerequisite

  • Knowledge of Linux, Cloud technologies

  • Understanding of networking and operating systems

  • Basic understanding of programming languages

Who should attend: Targeted for Cloud Engineers, Solution Architects, Centre of Excellence Team, Microsoft Windows Server Administrators, Unix/Linux Administrators, Storage Administrators & Network Administrators.

What you will learn

Devops-toolchain.svg.png
  • Overview and detailed understanding of DevOps

  • Complete understanding of DevOps Principles

  • Infrastructure Setup

  • Software Version Control using GIT Hub

  • Setup continuous Deployment with Docker

  • Configuration Management using Ansible   

  • Continuous Testing using Selenium

  • Install and Configure Maven

  • Continuous Integration using Jenkins

  • Continuous Orchestration using Kubernetes

  • Install and configure Terraform

  • Setup Continuous Monitoring

What's more?

  • Two hands-on Projects

  • Four Case studies


Detailed Course Content

Overview and detailed understanding of DevOps

  • What is DevOps and why DevOps is needed?

  • How is DevOps different from traditional IT

  • The DevOps culture and Lifecycle and detailed DevOps Work Flow

  • How is DevOps different from Agile? DevOps Vs Agile

Complete understanding of DevOps Principles

    The DevOps Principles

    Roles, Responsibilities, and Skills of a DevOps Engineer/Architect

    Dev ops in Software Development Life Cycle (SDLC)

    DevOps Automation Tools and the future of DevOps


Infrastructure Setup

  • EC2 Walkthrough

  • Installation of DevOps Tools on cloud

  • Git, SVN, Docker

  • Maven

  • Jenkins/Jira

  • Ansible, Kubernetes and Terraform

Software Version Control using GIT Hub

  • What is Version Control

  • Types of Version Control System

  • Introduction to SVN

  • Introduction to Git and Git Lifecycle

  • Common Git Commands

  • Working with Branches in Git

  • Merging Branches

  • Resolving Merge Conflicts and Git Workflow

Hands on Labs

  • 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


Setup

  • Containerization with Docker

  • Introduction to Docker

  • Understanding Docker Lifecycle

  • Components of Docker Ecosystem

  • Common Docker Operations

  • Creating a Docker Hub Account

  • Committing changes in a Container

  • Pushing a Container Image to DockerHub

  • Creating Custom Docker Images using Docker file

   Hands on Labs  

  • Common Docker Operations

  • Creating a DockerHub Account

  • Committing Changes to a Container

  • Pushing container to DockerHub

  • Creating Local Image Repository

  • Building an Image using Docker file


Containerization with Docker

  • Ecosystem and Networking

  • 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

Hands on Labs  

  • Creating Docker Volumes

  • Using Docker Compose to deploy multiple containers


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

Hands on Labs

  • Installing Ansible on AWS

  • Creating a Playbook using YAML

  • Creating an Ansible Role

  • Using Roles in Playbook


Ansible Best Practices Approach

  • Installing Ansible on AWS

  • Discuss about the ansible best practices approach for the delivery excellence

  • How to Use source control 

  • Ansible file and directory structures

  • How to use Dynamic Inventory sources

  • Manage variable inventory management

  • How to tune ansible for your environment

Continuous Testing using Selenium

  • What is Continuous Testing?

  • Introduction to Selenium

Install and Configure Maven

  • What is Maven?

  • Using Maven with Selenium

  • Creating Test Cases with Selenium

  • Running Test Cases on Chromium Web Driver

  • What is Headless Mode?

Hands on Labs  

  • 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

Hands on Labs  

  • Creating a Jenkins Master Slave on AWS

  • Installing Plug-ins in Jenkins

  • Creating Jenkins Builds

  • Creating Scheduled Builds

  • Triggering Jobs using Git Web Hooks and using the Pipeline Plugin


Continuous Orchestration using Kubernetes

  • Introduction to Kubernetes

  • Docker Swarm vs Kubernetes

  • Understand Kubernetes Architecture

  • What are Kubernetes objects?

  • What are YAML files?

  • Name, Namespaces, Labels & selectors, Annotations

  • Deploying Kubernetes using Kubeadms

  • Alternate ways of deploying Kubernetes

  • Creating a Deployment in Kubernetes using YAML

  • Services in Kubernetes

Ingress, Dashboard and Kubernetes best security practices

  • What is Ingress and

  • What is a Kubernetes Dashboard?

  • Setting up Kubernetes Dashboard

  • Security practices for Kubernetes

Hands on Labs  

  • Setting up Kubernetes using kubeadm

  • Creating a Deployment

  • Demonstrating the use of Ingress, services and deployments together

  • Creating ingress with name hosting, setting up and working with Kubernetes Dashboards


Introduction to Pods/Volumes and Services in Kubernetes

  • What are Pods and Replication Controllers?

  • What is a Deployment?

  • Introduction to Kube Services and its types

  • Stateful and Demon sets and Jobs

  • What are volumes?

  • Types of volumes

  • Persistent volumes

Hands on Labs   

  • Creating Pods, Replication Controller, Deployments, Services and Jobs

  • Creating volumes, Creating Persistent Volumes, Creating and working with secrets, Taints and Tolerations


Terraform

  • Introduction to terraform

  • Infrastructure Automation

  • Install Terraform

  • Providers

  • Resources

  • Basic Syntax

Hands on Labs

  • Making your First script main.tf

  • Getting started with Terraform

  • Terraform Plan, show, Apply, Destroy

  • Exploring Terraform Registry

  • Interpolation

  • Tainting and Updating Resources

  • Terraform Console and Output

  • Terraform Variables

  • Breaking Out Our Variables and Outputs

Hands on Labs  – Modules

  • Breaking down main.tf into variables.tf, output.tf

  • Introduction to Terraform Modules

  • Module repositories

  • First Basic Module

  • The Module codes

  • Main Terraform Code

  • Using git repositories to save modules


Terraform with AWS: lab Part 1

  • Setting up the system for AWS

  • AWS Storage: The S3 Bucket and Random ID

  • AWS Storage: The Root Module

  • AWS Compute: AMI Data, Key Pair, and the File Function

  • AWS Compute: The EC2 Instance

  • AWS Compute: User Data and Template Files

  • AWS Compute: The Root Module

Terraform Integration

  • Adding S3 backend

  • Integration with Git

  • Packer introduction

  • Terraform with Packer

  • Terraform with Jenkins

  • Terraform Formatting and Remote State

  • Terraform RandomID and S3 Buckets

Terraform Best Practices

  • Best practices in writing terraform scripts

  • Terraform Workflow

  • Terraform projects

  • New features of Terraform


Terraform with AWS: Lab part 2 

  • AWS Networking: VPC, IGW, and Route Tables

  • AWS Networking: Subnets, Security, and the Count Attribute

  • AWS Networking: The Root Module

Terraform Troubleshooting and Testing

  • Terraform Plan revisited

  • Debugging the script

  • Terraform Testing

  • Lab: Writing test scripts for Terraform.

  • Lab: Testing with Docker

Continuous Monitoring 

  • What is Continuous Monitoring

  • Introduction to Federation

  • Kubernetes Monitoring

  • Setting up Prometheus

Hands on Labs   

  • Controlling cluster from the outside

  • Setting up and working with Prometheus


Projects

What projects you will be working on during this DevOps certification training?

In this DevOps project you will be introduced to the DevOps pipeline demo in various industry domains like media, finance, medical projects and more. You will get hands-on experience in Docker containerization by deploying Jenkins, working with integration tests in DevOps, Project Reports and finance app configuration.

Project 1: Creating CI/CD Pipeline to build and test a Website

Problem Statement: How to create a CI/CD Pipeline for building and testing a website

Topics: Git, Docker, Jenkins, Selenium, Ansible

Highlights

  • Setting Ansible and Jenkins in Master Slave Architecture

  • Integrating Git and Jenkins for automated pipelines

  • Using Ansible for Configuration Management

  • Containerizing a Websit

Project 2: Deploying an app on Kubernetes using CI/CD Pipelines

Topics : Git, Docker, Jenkins, Selenium, Kubernetes

Highlights:

  • Connecting Jenkins, Git and Kubernetes

  • Containerizing code using Docker file

  • Deploying Docker file to container, and then to Docker hub

  • Deploying from Docker hub to Kubernetes using Jenkins


Case Study 1: Implementing Git Workflow

Problem Statement: To analyze and use a specific Git Workflow scenario

Topics: Git branches, Git workflows, merging, rebasing

Highlights:

Using Industry standard architectures for implementing Git

Merging branches

Simulating a networking architecture in git

 

Case Study 2: Resolving Merge Conflicts

Problem Statement: Understanding how to resolve merge conflicts in different scenarios

Topics: Git branches, merging, rebasing

Highlights:

Understanding the difference between merging and rebasing

Resolving Merge conflicts based on different scenarios

 


Case Study 3: Creating custom containers in Docker

Problem Statement: Creating a custom container from base Ubuntu container

Topics: Dockerfile, Dockerhub

Highlights:

Creating a Dockerfile

Pushing container to Dockerhub

Creating custom Docker images

Case Study 4: Using Bind Mounts, Docker Compose

Problem Statement: Deploy an application using Docker compose, Bind Mounts

Topics:  Docker storage, Docker Compose, Docker Networks

Highlights:

Creating and using Bind Mounts in Docker

Deploying Multiple Docker applications using Docker compose