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