This DevOps training is designed to make you a certified practitioner by providing you hands-on training on DevOps tools and sharing DevOps best practices about Continuous Development, Continuous Testing, Configuration Management, including Continuous Integration and Continuous Deployment and finally Continuous Monitoring of the software throughout its development life cycle.
LINUX Basics:
- Unix and linux difference
• Linux File system structure
• Basic linux/unix commands
• Changing file permissions and ownership
• Types of links soft and hard link
• Filter commands
• Simple filter and advance filter commands
• Start and stop services
• Find and kill the process with id and name
• Package installation using RPM and YUM
Introduction to DevOps
- Define Devops
• What is Devops
• SDLC models,Lean,ITIL,Agile
• Why Devops?
• History of Devops
• Devops Stakeholders
• Devops Goals
• Important terminology
• Devops perspective
• Devops and Agile
• Devops Tools
• Configuration management
• Continuous Integration and Deployment
Introduction to Cloud computing
- What is cloud computing
• Characteristics of cloud computing
• Cloud implementation models
• Cloud service models
• Advantages of cloud computing
• Concerns of cloud computing
GIT: Version Control
- Introduction
What is Git
About Version Control System and Types o Difference between CVCS and DVCS
A short history of GIT o GIT Basics
GIT Command Line - Installing Git
Installing on Linux
Installing on Windows
Initial setup - Git Essentials
Creating repository
Cloning, check-in and committing o Fetch pull and remoteBranching
Creating the Branches, switching the branches, merging the branches.
Chef for configuration management
- Overview of Chef
Common Chef Terminology (Server,
Workstation, Client, Repository etc.)
Servers and Nodes
Chef Configuration Concepts - Workstation Setup
How to configure knife
Execute some commands to test connection between knife and workstation - Organization Setup
Create organization
Add yourself and node to organization - Test Node Setup
Create a server and add to organization
Check node details using knife - Node Objects and Search
How to Add Run list to Node
Check node Details - Environments
How to create Environments
Add servers to environments - Roles
Create roles
Add Roles to organization - Attributes
Understanding of Attributes
Creating Custom Attributes
Defining in Cookbooks - Data bags
Understanding the data bags
Creating and managing the data bags
Creating the data bags using CLI and Chef Console Sample data bags for Creating Users.
AWS
Creating AWS account
Free tier Eligible services
Understanding AWS Regions and availability zones
- EC2 ( Elastic Cloud Comput)
About EC2 and types , Pricing
EIP ( Elastic IP address), Allocating, associating , releasing
Launch windows and Linux Instances in AWS
Connecting windows and Linux instances from windows desktop and Linux machines - S3 ( Simple Storage Service)
About AWS Storage services, EBS and S3
Creating S3 Buckets and putting objects in bucket
Discussion about Bucket Properties
S3 Pricing
About S3 glecier - EBS( Elastic Block Storage)
Types of EBS Volumes
Creation, attaching and Detaching volumes - ELB ( Elastic Load Balancer)
Understanding the load balancing
Configuring ELB and adding the webservers under ELB - Auto Scaling
Types of Scaling ( Horizontal and Vertical)
Configuring Launch Configuration
Creating and defining the auto scaling group policy - IAM ( Identity Access Management)
Understanding of AWS Security using IAM
Definition of Roles, policies and Groups
Creating IAM Users and managing password policies - RDS ( Relational Database server)
About RDS and available RDS Engines in AWS
Configuring MYSQL RDS service
Connecting EC2 Instance to RDS Instance
Puppet for configuration management
- What is Puppet?
How puppet works o Puppet Architecture Master and Agents
Puppet terminology and about Manifests - Installation and Configuration
Installing Puppet
Configuring Puppet Master and Agent
Connecting Agents - Puppet Master
Puppet configuration files - Puppet Language Basics
The declarative language
Resources
Using Basic resources like file,exec,package service
Resource Collectors
Virtual Resources
Exported Resources
Manifests
Modules and Classes
Class Parameters
Defined Type - Templates
Static Contents Explosion
Using Dynamic Content with Templates
Templates Overview
ERB - Example Code Manifests/Modules
NTP Module
Users Module
SSH
Sudo - Puppet Forge
Understanding the Puppet Forge
Module structure
Install LAMP with preexisting modules
Installing Apache Tomcat with Puppet Modules
Jenkins – Continuous Integration
- Introduction.
Understanding continuous integration
Introduction about Jenkins
Build Cycle
Jenkins Architecture - Installation
Obtaining and installing Jenkins
Installing and configuring Jenkins using WAR and RPM o Java installation and configuration
Maven Installation
Exploring Jenkins Dashboard.
- Jobs
Creating Jobs
Running the Jobs
Setting up the global environments for Jobs
Adding and updating Plugins
Disabling and deleting jobs
- Build Deployments
Understanding Deployment.
Tomcat installation and configuration - Securing Jenkins
Authentication
Jenkins Plugin Authorization Confidentiality Creating users
Best Practices for Jenkins
Docker– Containers
- Introduction
What is a Docker
Use case of Docker
Platforms for Docker
Dockers vs. Virtualization - Architecture
Docker Architecture.
Understanding the Docker components - Installation
Installing Docker on Linux.
Understanding Installation of Docker on windows.
Some Docker commands.
Provisioning - Docker Hub.
Downloading Docker images.
Uploading the images in Docker Registry and AWS ECS
Understanding the containers
Running commands in container.
Running multiple containers. - Custom images
Creating a custom image.
Running a container from the custom image.
Publishing the custom image. - Docker Networking
Accessing containers
Linking containers
Exposing container ports
Container Routing
- Docker Compose
Installing The Docker compose
Terminology in Docker compose
Build word press site using Docker compose
VAGRANT
- Introduction
Why and what is Vagrant
Uses of Vagrant in an environment
Alternatives of Vagrant
Vagrant versions - Installation and Configuration
Installing Virtual box
How to install Vagrant on Windows and Linux
Configuring Vagrant - Provisioning with Vagrant
Creating first VM with Vagrant
Operations on the VM o Connecting to the VM
Add required Images to Vagrant
Creating network and port forwarding using Vagrant
NEW RELIC
- Introduction
About Monitoring tools o About New Relic
Installing and Configuring New Relic
Application Monitoring using New Relic o Server Monitoring using New Relic
Alerts policies
ELK
- Introduction
• What is ELK?
• ELK Installation
• ElasticSearch
• Logstash
• Configuring Logstashand Kiban
Type 2:-
What is DevOps DevOps is a process to deliver software quickly and effectively by fostering collaboration between different departments like developers and Ops team. This is supported by automation, and by analyzing organization-wide metrics to see what’s going right and what’s going wrong.
Who can learn
- People who is having B.E/B.Tech/MCA/B.Sc/M.Sc/M.Sc degree
- Developers/Testers/Middleware/Ops/Systems admins
- Anyone who is looking for IT prospects
Do I need experience
- Absolutely not
Course Objective
Course content is designed as per latest requirements, tools used in most of the IT organizations and prepared to balance job descriptions for interviews and infrastructure.
Devops Tools Covered
- Docker
- Chef
- Puppet
- Ansible
- Jenkins
- Linux
- Vagrant
- Maven
- SVN
- ANT
- GIT
- Kibana
- Logstash
- Nagios
- Git
- ITIL Process
Fundamentals
Devops Overview
- Why Devops
- Organizational view
- Stakeholders view
- Developers/ Testers view
- Operations view
- DevOps definition
Agile and SDLC
- Introduction
- Phases
- Roles
DevOps and Agile
- Overview
- Roles of Dev team
- Roles Ops team
How effective DevOps is!
Roles and responsibilities
- Who is a DevOps engineer
- what he does
- Other teams to communicate
- Automate
Overview of DevOps Automation
- Introduction
- Build tools
- Source code management/version control tools
- Configuration tools
- Monitoring tools
- Continuous Integration
- Continuous Testing
- Continuous Deployment
- Planning
- Issue Tracking
- Types of environments
Cloud Computing
- Cloud Computing Models
- Software As A Service (SAAS)
- Platform As A Service(PAAS)
- Infrastructure As A Service(IAAS)
- Understanding Public, Private and Hybrid clouds
- Cloud Computing Benefits
- Cloud Computing Challenges
- DevOps in Cloud
Linux
- Commands
- Files and hierarchy
- Remote server access using ssh
- Bash Scripting
DevOps Tools
Build Tools
ANT
- Ant Introduction
- Ant tasks
- Ant properties and command line calls
- Advanced ant tasks and external tasks
Maven
- Environment Setup and configuration
- Build life cycle
- Build profiles
- Repositories
- Plug-ins
- Creating, Building and testing projects
- Project templates
- Snapshots
- Build automation
- Manage dependencies
- Web application
Source Code Management Tools
SVN (Subversion)
- SVN introduction
- SVN and Apache installation and configurations
- User Administration
- Directory structure
- SVN Commands
- Branching and merging strategies
- Configuration management
Git
- Installation
- Various levels of configuration
- Staging and Committing
- Tracking
Continuous Integration
Jenkins
Jenkins Introduction
Installation and configuration
- Prerequisites
- Download & installation
- Configuration tour
Managing Jenkins
- Managing Jenkins
- Managing Credentials
- Plugin Management
- Jenkins Backup
- Create a Build Slave
Creating Application Builds
- Anatomy of the build
- Cloning sample project
- Manual compilation with Maven
- Manually Testing, Packaging and Running the App
- Creating a Jenkins Job and configuring a Git Repo
- Compiling in Jenkins
- Browsing the workspace in Jenkins
- App Packaging in Jenkins
- Archiving artifacts
- Cleaning up Past Builds
- Build time trend
- The jenkins Dashboard
- Troubleshooting build failures
- Importing Job config.xml
- Anatomy of the job
- Build linking upstream and downstream
Plugins
- Introduction
- Plugin Architecture
- Extension Points
- Getting Plugins
- Plugin Wiki
- Useful Plugins Overview
- Source Code Plugins
- Trigger Plugins
- Build Tool Plugins
- Wrapper Plugins
- Notifier Plugins
- Reporting Plugins
- Artifact & UI Plugins
- Installing a plugin
- Plugin configuration
- Security Overview
Continuous Testing and Continuous Integration and Testing
- Adding steps to Freestyle Project
- Creating a Pipeline job to execute Maven
- Archiving in a Pipeline
- Checking out git repository in pipeline
- The Master Agent Model
- Allocating a node and workspace in Pipeline
- High level progress with Pipeline stages
- Triggering Automated Builds
- Configuring an Email Server
- Notifications when a build fails
- Duplicating a job
- Executing unit tests
- Executing selenium tests
- Visualizing Test Results
Finding and Managing Plugins
- The need for plugins
- Integrated Code Coverage
- Assessing a plugin
- Installing the HTML Publisher plugin
- Publishing HTML Reports
- Testing Plugins and Plugin Types
- BlueOcean UI Plugin
Building Continuous Delivery Pipeline
- Continuous Delivery
- Backup and Restore
- Starting point and Pipeline stashing
- Browsing Workspaces in Pipeline Jobs
- A Second Node Allocation
- Adding an Agent Node
- Setup parallel integration testing in a pipeline
- Executing and Monitoring Parallel pipelines
- Manual Approval for Deployments
- Setup Deployment to staging
- Executing a Deployment pipeline
- Checking pipeline script to Git
Configuration Management Tools
Introduction
- Introduction to puppet
- Puppet Head First
- Puppet Enterprise Stack And Core Concepts
- Nodes
Puppet Components
- Installing the puppet master & learning puppet master layout
- Installing the puppet Enterprise layout
- conf
- Resource Abstraction Layer
- Facter
- Live Management
- Catalog Compilation
Building Modules and Classes
- Module Structure & Class Naming
- Defining & Testing our first class
- Declaring classes & creating node definitions
- Auto loading
Puppet DSL
- DSL Overview
- Getting Started and Looking at arrays
- Relationships & Dependencies
- Adding SSH Class to Node Definition
- Conditional Statements & Best Practices
- Regular Expressions If statements
- Adding Ubuntu Node & testing
- Meta parameters
- Files & Resource Defaults
- Variables, parameterization& Scope
- Inheritance
- Rvalue Functions
- Templates
- Creating the NTP Class
- Resource Collectors
- Class Parameters & Scope
Roles & Profiles
- Overview
- Creating a profiles module
- Creating a roles module
Hiera
- Overview
- Setting up configuration file & Data Sources
- Use Hiera by example
Building an Apache Module
- Building the Environment & Overview
- Building the Apache Classes & Parameters
- Building the Core Classes & Resource Type
- Adding Directory Management
- Adding defined Resource Type
- Creating the required templates & testing
- Adding multiple host files
Node Classification
- pp and Node definition matching
- External Node Classifiers
- Classifying the Node with the Console
- Using Site.pp with ENC
Puppet Management
- Common Console Tasks
- Troubleshooting
- Reporting
- Preparing Modules for puppet forge & downloading forge modules
- Deactivating a puppet Enterprise node
- Event Inspecto
- External fact
- Checking Values of Setting
- Puppet Resource Command
Resource Type Practice
- Host
- Resource Type Titles
- Mount
Chef
Introduction to chef
- Defining chef
- Common Chef Terminology
- Chef Server
- Chef Workstation
- Chef-Repo
- Chef-Client
- Server and Nodes
- Chef Configuration Concepts
Setting up the Environment
- Intro to ChefDK
- Chef Workstation Setup
Chef Server
- Installing Chef Server
- Chef-Repo, Setting Up the Work Station, and Bootstrapping
- Chef Solo vs Chef Zero vs Chef Server
- Chef Client, Nodes and Run Lists
- Building A Quick Apache Cookbook
- Managing Node Run_Lists
- Chef-Client Configuration
Resources
- Understanding Chef and Chef Convergence
- Common Chef Resources
- Default Resource Actions
- Applying Chef Resources Hands On
- Working with not_if and only_if Guards
- Extending Chef with Custom Resources
Recipes and Cookbooks
- Understanding Chef Recipes and Run Lists
- Understanding Chef Cookbooks Generating
- Cookbook
- Cookbook Pro-Tips
Local Cookbook Development Basics
- Generators
- Test Driven Development
- ChefSpec
- Test Kitchen Configuration
- Using Test Kitchen
- InSpec
- Static Code Analysis
- Troubleshooting
Cookbook Components
- Cookbook Structure
- Metadata Anatomy
- Versioning
- Attributes
- Common Resources
- Templates
- Libraries
- Custom Resources
Design Patterns and Theory
- Cookbook Disposition
- Wrapper Cookbooks
- Community Cookbooks
- Managing Cookbook Dependencies
- Data Bags
- Vault
- Search
Nodes and Search
- Node Object
- Working With Ohai and Node Attributes
- Understanding Search
- knife Search
Roles and Environments
- Setting Up A New Node
- Understanding Roles
- Creating Roles
- Understanding Environments
- Bootstrapping The Staging Node
- Creating And Using Environments
Desired State Configuration
- Imperative Vs Declarative Approach To Configuration Management
- Pull vs Push Approach
- Windows DSC
- Removing Resources From Recipes
Chef Supermarket
- Chef Supermarket
- Using A Private Supermarket
Building Web Server Cookbook
- Getting Setup
- Adding Platform Support to the Cookbook
- Adding Local Chef-Repo to Github
- Install and configure Chef Reporting
Chef Offerings
- Chef Automate: Overview
- Chef Automate: Workflow
Deploying Nodes In Production
Vagrant
Introduction
- What is Vagrant
- Virtualization Overview
Setting Up Vagrant
- Virtual Box Installation
- Vagrant Installation
- Vagrant without Virtual Box
Using Vagrant
- Vagrant Machine
- Vagrant Files
- Boxes
- Running Vagrant Machines
- SSH to Vagrant Machine
- Synced Folders
- Networking Basics
Automated Provisioning
- Provisioning
- Installing Apache /Shell Script
- Installing Apache /Chef
- Installing Apache/ Puppet
Networking
- Private Networking
- Public Networking
Multiple Machines with Vagrant
- Managing Multiple Machines
Hands on multiple machine using vagrant
Boxes
- Vagrant Boxes
- Basic Box Management
- Creating Boxes from existing environment
- Creating custom boxes
Ansible
Introduction
- Introduction to Ansible
- Ansible vs. Other Tools Ansible vs. Other Tools
- Ansible Documentation: Modules
Setup and Configuration
- Test Environment Setup
- Download and Installation
- Ansible Configuration File
- Ansible Python Dependencies
- The HOSTS File
- Overriding the Default HOSTS File
- Overriding the Default System Ansible.Cfg File
- Overriding the Default Roles Path
- Understanding the core components of Ansible
- Ad-hoc commands in Ansible
Use both static and dynamic inventories to define groups of hosts
- Overview of static and dynamic inventories in Ansible
- Static Inventories
- Dynamic Inventories
Ansible Playbooks
- Configuring Your ‘Ansible’ Account
- Ansible Command Line
- System Facts
- System Facts: Common Values for Playbooks
- Our First Playbook
- Variables: Inclusion Types
- Create a Playbook from Outline
- Optimizing Playbook
- Taking Playbook for a Dry Run
- Simple Variable Substitution
- Lookups
- RunOnce
- Local Actions
- Loops
- Conditionals
- Until
- Notify
- Vault
- Prompt – Interactive Playbook
- Basic Include Statements Tags
- Basic Error Handling
- Jinja2 Templates
- LocalAction
- DelegateTo
- Use a playbook to copy a program and customize it for the target host.
Ansible Modules
- Commonly used Modules
- Using modules in playbooks
- The ‘Setup’ Module
- The ‘File’ Module
- The ‘Pause’ Module
- The ‘WaitFor’ Module
- The ‘Yum’ Module
- The ‘Apt’ Module
- The ‘Service’ Module
- The ‘Copy’ Module
- The ‘Command’ Module
- The ‘Cron’ Module
- The ‘Debug’ Module
- The ‘Fetch’ Module
- The ‘User’ Module
- The ‘AT’ Module
- The ‘DNF’ Module
- The ‘Apache2_Module’ Module
- The ‘SetFact’ Module
- The ‘Stat’ Module
- The ‘Script’ Module
- The ‘Shell’ Module
- The ‘SELinux’ Module
- The ‘SEBoolean’ Module
- The ‘Raw’ Module
- The ‘Ping’ Module
- The ‘Package’ Module
- The ‘Unarchive’ Module
- The ‘HTPasswd’ Module
- The ‘GetURL’ Module
- The ‘Group’ Module
- The ‘Mail’ Module
- The ‘Filesystem’ Module
- The ‘Mount’ Module
- The ‘Notify’ Module
- The ‘AptRepo’ Module
- The ‘ AptKey’ Module
- The ‘ ACL’ Module
- The ‘Git’ Module
- Creating a Jinja2 Template File
- The ‘Template’ Module
- The ‘MySQL_DB’ Module
- The ‘MySQL_User’ Module
- The ‘Kernel_Blacklist’ Module
Create and use templates to create customized configuration files
- Introduction
- Templates
Working with Ansible facts and variables.
- Let see how we get ansible facts and how we use facts.d
- Using Ansible facts
- Using variables to gather server info
Roles
- Introduction to Roles
- Roles – The Directory Structure
- Role Based Tasks
- Task Order – Pre and Post Tasks
- Roles – Conditional Execution
- Roles – Variable Substitution
- Roles – Handlers
- Roles – Using Notification
- Roles – Configuring Alternate Roles Paths
- Roles – Conditional Include Statements
- Roles – Waiting For Events
- Roles – Executing a Task Until
- Roles – Using Tags
- Roles – Breaking a Playbook Into a Role
- Roles – Passing Variables from Command Line
- Roles – Using Jinja2 Templates
- Roles – DelegateTo
- Roles – LocalAction
- Roles – Lets create a role to install apache. Lets
- use the previous role and add a new one. Lets
- build on the previous roles
Download roles from Ansible Galaxy and use them
- Ansible galaxy and how its used
- Lets use multiple roles
Ansible Command Line Usage
- Ansible Command Line – Installing Packages
- Ansible Command Line – Services and Hosts
- Ansible Command Line – Commands and Shells
- Ansible Command Line – Managing Users
- Ansible Command Line – Create and Manage Cron Jobs
- Ansible Command Line – Running Arbitrary Commands
- Ansible Command Line – Output Tree
Managing Parallelism
- What is parallelism?
- Parallelism in a playbook
Using ansible-vault in playbooks to protect sensitive data
- Lets discuss ansible-vault and see an example
- Options useable with ansible-vault
Install ansible tower and use it to manage systems
- Installing a trial version of ansible tower
- Log into our Ansible tower and run a sample task Lets
- add to the inventory and run a task against them
Use cases
- Creating a Web Server Deployment – Outline
- Creating a Web Server Deployment – Playbook First Pass
- Creating a Web Server Deployment – Playbook Optimization
- Creating a Web Server Deployment – Breaking Into Role(s)
- Creating an NFS Server Deployment – Outline
- Creating an NFS Server Deployment – Playbook First Pass
- Creating an NFS Server Deployment – Playbook Optimization
- Creating an NFS Server Deployment – Breaking Into Role(s)
- Creating a Database Server Deployment – Outline
- Creating a Database Server Deployment – Playbook First Pass
- Creating a Database Server Deployment – Playbook Optimization
- Creating a Database Server Deployment – Breaking Into Role(s)
Containerization
Docker
Introduction
Installing Docker
- Installing Docker on Windows
- Installing Docker on Linux
Working with Containers
- What is container
- Docker run command
- Theory of pulling and Running Containers
- Working with images
- Container Life cycle
Swarm Mode & Microservices
- Swarm Mode Theory
- Configuring Swarm Mode
- Services
- Scaling Services
- Rolling Updates
- Stacks & DABs
Introducing the App
- The App
- The Dockerfile
- Pushing App to Github
Configuring Test Builds
- Performing test Builds
Pushing App to Production
Monitoring
Nagios
- Installation of Nagios
- Configuring Nagios
- Configuring Nagios
- Triggering Alerts
Elasticsearch+logstash+Kibana
- Installation of ELK stack
- Configuring the ELK Stack
- Monitoring logs with ELK
ITIL Process
- Release process
- Pre build and post build activities
- Incident management
Cloud Environment
- Environment setup
- Cloud deployment
- CI and CD activities in Cloud