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