DevOps Automation

Let’s take a close look at the business objectives of a large global bank to understand DevOps –

  • CEO of the company wishes to bring down IT RUN cost down by at least 20%
  • CTO of the bank wants to improve the resilience of the IT applications
  • COO wants to re-design the organization with lean and Agile processes
  • As a company they want to roll-out new products and services at a rapid rate

These objectives need to translate into objectives for the IT organization inside the bank, so that a fast, collaborative and cross functional execution enables the business leaders to full fill the business goals.

Hence, what do these business objectives mean to the IT organization??

Let us have a look,

CEO of the company wishes to bring down the IT RUN cost down by at least
20%. For IT translates into,

  • Eliminate the technical waste that eats the cost
  • Improved Automation across the SDLC

CTO of the bank wants to improve the resilience of the IT applications.

For IT translates into,

  • Better Tools and monitoring of production code
  • On demand spin up and spin down environment capacity

CEO / COO wants to re-design the organization with lean and Agile processes.
For IT translates into,

  • Agile methodologies and processes
  • Collaborative workforce for quicker turn around
  • Cross-functional team to take up additional responsibilities

DevOps adoption journey in the global bank will allow the IT team to full fill the above goals, and provide tangible business benefits such as, the bank would be able reduce the customer enrollment for a product from weeks to 2 days.

Key characteristics of DevOps:

  • Quick Development and Better Quality – rolling out feature every week
  • Faster and successful deployment to Production – At least 3X faster deployment cycle

During the DevOps training, you will learn how to achieve business goals/objective by implementing IT imperatives.

Who can attend

Engineering graduates | Working professionals having at least 2-3 years experiences in IT in any areas like development, testing, operations, technical support

course outline

DevOps Introduction

Git/GitHub

Linux

Development Process/Agile

Jenkins

Docker

Kubernetes

Terraform

Ansible

Nagios

Demo Session Recording:

Trainer:

Ketan Jobanputra

Course description

Case-Study of a Fortune 500 global bank
  • Bank’s offerings

  • Bank’s current infrastructure and technical landscape

  • Bank’s current challenges

  • Bank’s business objectives

Before DevOps
  • Evaluation of Software Development and Methodology

  • Comparison of different Methodology

  • Software Development Life Cycle and Tool Sets

  • Introduction of Agile Methodology (Main Principle, Ceremonies, User Story, Roles etc.)

  • Challenges in Agile

DevOps Introduction
  • DevOps History

  • Elaborate DevOps, DevTestOps, DevSecOps

  • Need for DevOps : in the context of our case study and in general

  • DevOps Key Players and trends

  • DevOps : Toolset

  • Is Agile mandatory for the culture of DevOps

  • Continuous Delivery Vs Continuous Deployment

  • Amazon and Netflix case study

Git/GitHub
  • Installation of Git and Create GitHub Account

  • Introduction to SCM

  • Types of SCMs

  • Creating repo(repositories)

  • Adding source code files to repo

  • Branches and Best practices

  • Track Files and logs

  • Merging, Cloning, tagging

  • gitignore

  • Working on Git Command Line

Bonus Material

  • Git Internals

Labs/Assessments

  • Add files and commit
  • Commit to Local and push changes to Remote

  • Pull changes from the remote repository

  • Create branches, merge them, revert a commit, and tag commit

  • Pull Request with GitHub

Linux (CentOS)
  • What is Linux

  • Brief History

  • Linux Basics

  • Linux adoption in industry examples

  • Linux file system

  • Linux important directories

  • Package Management RPM

  • Using Yum for installation

  • Understanding Linux commands basics

  • Working with basic commands

  • Working with commands required for DevOps training

  • Linux command history

  • Globbing and Quoting

  • Linux file handling commands

  • pipes, grep and regular expression

  • Text Editor – vim

  • Security and permissions

  • Shell scripting

  • Connecting two machines using SSH

Bonus material

  • Locating and finding files

  • Changing command prompt Format

  • Cronjob in Linux

Linux (CentOS) - Lab/Assessments
  • Practicing Linux command
  • Use absolute and relative path
  • Use RPM and yum to install Apache server
  • List files in various ways and learn how to work with hidden files
  • Try setting and removing environment variables
  • Use command history and reuse the previous commands
  • reaching out to files and folders using globbing
  • Use and for quoting and backslash
  • try locate and find commands
  • try less, head, and tail commands to view file content
  • modify files using redirection
  • searching content using pipes, grep and regular expression
  • Create a file using vim and understand various shortcuts to edit files
  • Create users, give permissions, changing permissions and ownership

Shell Scripting

Shell Scripting

  • What is scripting

  • Declaring variables

  • Declaring arrays

  • Control flow statements

  • Creating functions

  • Debugging

  • Using functions

Labs/Assessments:

  • Labs/Assessments:

  • Writing a simple script

  • Control flow examples

CI/CD with Jenkins
  • Installation and Configuration Jenkins

  • What is CI and CD pipelines

  • Plugins

  • Manage Configuration

  • Jenkins Projects

  • Build Accounts

  • Setup Build Jobs

  • Scheduling Builds & GitHub Webhook

  • Master and Slave Setup

  • Running jobs on Slave

  • Configuring a Jenkins Pipeline

CI/CD with Jenkins - Labs/Assessments
  • Plugin manager hands-on
  • Configuring Matrix Based Security in Jenkins
  • Jenkins Freestyle project Configuration
  • Maven Build
  • Jenkins Pipelines with GitHub – Continuous Deployment

Docker
  • Installation and Configuration Docker

  • Containers Vs Virtual Machines

  • Containers and Docker

  • Docker Architecture

  • dockerhub

  • How to run containers : command Line

  • Understanding Container Lifecycle

  • Creating custom images –legacy and using BuildKit

  • Redirecting ports

  • Container debugging – logs and exec

  • Creating Dockerfile

  • Dockerfile best practices

Lab/Assessments:

  • Pull image and create a container

  • Build a custom image using ubuntu

  • Push the image to dockerhub

  • Try various docker commands

  • Redirecting port to access the application from web browser

  • Containerizing an app using Dockerfile

Kubernetes
  • Installation and Configuration Kubernetes

  • Container orchestration

  • Kubernetes Architecture

  • Master and Worker node components

  • Virtual clusters – Namespaces

  • Pods

  • Deployment

  • Jobs

  • Daemonsets

  • Scaling and Self Healing

  • Rolling Updates and Rollbacks

  • Services

  • Storage

Lab/Assessments:

  • Create a Pod using yaml files

  • Create a deployment using yaml files

  • Creating different types of service

  • PVC-PV-SC -Storage

Kubernetes - Bonus material
  • ConfigMaps
  • Secrets
  • Taints and Tolerations
  • Statefulsets

Terraform
  • Installation and Configuration

  • Introduction

  • Alternatives in the market

  • HashiCorp Configuration Language (HCL)

  • Simple script – init, plan, apply and destroy

  • Terraform Console

  • Terraform providers

  • Variables

  • Modules

  • Workspaces

  • Terraform – AWS

Labs/Assessments:

  • Terraform – Docker

  • Creating AWS infrastructure with Terraform

  • Creating Terraform Modules

Configuration Management using Ansible
  • Installation and Configuration Ansible

  • Introduction

  • Comparison with other CM tools

  • Introduction to YAML

  • Ansible inventories

  • Ansible Modules

  • Ad-hoc commands

  • Creating Playbooks

  • variables

  • Conditionals

  • Tasks

  • Handler tasks

  • Error handling

  • Tags

  • Jinja templates

  • Ansible Galaxy

  • Roles

  • Ansible Vault

  • Ansible use cases : WebServer Deployment, NFS Server Deployment, DB Server Deployment

  • Ansible: Best Practices

Ansible

Labs/Assessments

  • Executing ad-hoc commands

  • Updating configuration across 3 servers in parallel

  • Create a Jenkins jobs to integrate automated application deployment and deploy a simple java web application

  • Building a large playbook

  • Using Ansible Vault to encrypt password

Bonus1 - Software Development & DevOps (pre-recorded session)
  • Installation of JDK and JRE and environment variable set up

  • Installation of eclipse

  • Installation of Maven

  • Introduction to Apache Maven

  • Maven Repository : Central vs local

  • Understanding the Maven Lifecycle

  • Understanding POM.xml

  • Plugins

  • Introducing Maven Dependencies

  • Maven Build Properties

  • Executing Tests using Maven

Labs/Assessments

  • Create and build a Java project using Maven

  • Compile project using Maven

  • Run Test using Maven

  • Execute Java project using Maven

Bonus2 – Code Quality & Security - SonarQube And Code coverage –Cobertura (Pre-recorded session)
  • Basics SonarQube

  • Setup SonarQube

  • Managing Rules

  • SonarQube dashboard

  • Git and SonarQube

  • Basics of Cobertura

  • Setup Cobertura

  • Integrating with Maven

Labs/Assessments

  • Setup SonarQube and analyze a Java/Python project

  • Setup Cobertura to see the code coverage for a Java/Python project

Bonus3 – Continuous Monitoring with Nagios (Pre-recorded session)
  • Installation and Configuration-Nagios

  • Introduction

  • Basic components

  • Services

  • Notifications

  • Templates

  • NRPE

  • What are passive checks

  • Event Handlers

  • Reports

Labs/Assessment:

  • Create your own Nagios setup

  • Monitor 2 EC2 instances and 5 services

Bonus4 – End-to-End case studies – Live classroom

Case Study 1

  • Dockerize an Web application

  • Create Docker image using Dockerfile

  • Create Kubernetes cluster

  • Create a Jenkins pipeline create CI/CD pipeline to deploy the application on Kubernetes

  • Use Canary deployment

Case Study 2

  • Create EC2 instances and RDS using Terraform

  • Setup WordPress and connect to the DB using Ansible