

DevOps Expert
Introduction to DevOps
- What is DevOps?
- IT Evolution
- History of DevOps
- Different Teams Involved
- DevOps definitions
- DevOps and Software Development Life Cycle
- Waterfall Model
- Agile Model
- DevOps main objectives
- Prerequisites for DevOps
- Continuous Testing and Integration
- Continuous Release and Deployment
- Continuous Configuration Management
- Continuous Application Monitoring
- DevOps Toolsets
Overview of Linux
- Linux OS – Overview
- LAB: Setup CentOS/RHEL Linux in AWS
- user management and password less login
- cronjobs–editing, setting, deleting
- software/package installation —different ways (assuming on CentOS/RHEL)
- Logging in/out and the su command
- Configure sudo accounts and permissions
Overview of Linux
- Transferring files
- Linux Directory Structure
- Basic linux commands (awk, sed, grep, piping of commands etc, disk usage commands,
- Basic troubleshooting including network troubleshooting
- Shell scripting
- LAB: Write a shell script in Git and run it on AWS Linux
GIT
- Version Control System
- Centralized & Distributed Version Control System
- Anatomy of GIT
- GIT Features
- Git Commands
- 3-Tree Architecture
- GITHUB Projects
- Git Repositories
- GITHUB Management and Commands
- Clone
- Checkout
- Commit
- Push
- Merge
- Pull Request
- Fork/Pull
- Git Branches
- Remote branch
- Local branch
- Advantages of Git
Build Tools – Maven
- Java Compiler
- Maven Life Cycle
- Maven Installation
- Maven build requirements
- Maven POM XML File
Jenkins
- Getting started with Jenkins
- Overview
- How to Take this Course and How to Get Support
- About Continuous Integration
- Introduction to Jenkins and the History of Jenkins
- Install Java
- Install Jenkins
- Jenkins’ Architecture and Terms of Jenkins
- Overview of Jenkins UI:
- Dashboard and Menus
- Create Our First Jenkins Job
- Run our First Jenkins Job
- Email configuration, Global Security, Master-Slave Architecture.
CI Basics
- Overview of Microservices
- Overview of Sonarqube
- OWASP Vulnerabilties
- Running a ZAP scan
- Quick overview of DOJO services:
- BitBucket
- Bamboo
- Jira
- Sonarqube
- Confluence
- MS Build, Octopus Deploy
Continuous Integration (CI) with Jenkins
- Install Git and Jenkins GitHub Plugin
- Install Maven on Our Local Box
- Configure Jenkins to Work with Java, Git and Maven
- Text Direction: Create our First Maven-based Jenkins Project
- Create our First Maven-based Jenkins Project
- CI Pipeline
- Compile
- CodeReview
- UnitTest
- CodeCoverage
- Package
- Integration with JFrog and Sonar
- Run our First Jenkins Build and Jenkins Workspace
- Trouble Shooting: Run our First Jenkins Build and Jenkins Workspace
- Triggers in Jenkins
Continuous Delivery with Jenkins
- Archive Build Artifacts
- Install and Configure Tomcat as the Staging Environment
- The latest Deploy to Container plug-in
- Jenkins Build Pipeline
- Parallel Jenkins Build
- Master and slave
- Deployment
LAB: Installation of SonarQube and Jenkins Integration
Networking
- TCP/IP concepts: bitmasks, subnetting, gateways, IP addresses composition
- VLANs
- NAT and Private IP Addressing
- Firewalls
- How does Subnetting work?
- CIDR
- VPN
- Firewalls – Host-based, network-based and virtual
- Windows – Host Based Firewalls – Windows Firewall
- LAB: Setting Firewall in Windows and Linux
AWS
- Introduction to cloud computing
- Essential Characteristics of Cloud Computing
- Service Models in Cloud computing
- Deployment models in Cloud Computing
- Introduction to AWS
- LAB: AWS console overview
- AWS Account creation &free tier limitations overview
- Identity Access Management
- Root Account Vs IAM user
Azure
- Understanding VM architecture
- Types of OS supported Images by Azure
- Virtual Machine instances
- Understanding Custom Image
- Load balancing, Availability Set and Auto-Scaling
- LAB: Creating VMs for diff. OS
Azure DevOps
- Understanding DevOps in Azure
- Create simple pipeline
- Integrate/migrate disparate source control systems (e.g. GitHub, Azure Repos)
- Implement workflow hooks
- Configure permissions in the source control repository
- Organize the repository with git-tags
- LAB: setting a pipeline to deploy website on a VM
Containerization Concepts using Docker
- Introduction to Docker
- What are containers
- Why use containers
- Docker Support for Different OS
- Docker installation
- Container’s overview
- Container Management commands
- LAB: Install Docker in Linux environment and running containers
Introduction to Docker Components
- Docker Hub (public repo)
- Docker Trusted Registry (Private repo)
- Docker Engine
- Docker Container
- Docker Image
- Docker Compose
- Docker Swarm
- Docker Services
- Docker networking
- Volumes in containers
- Basic docker file scanning tools
o Snyk
o ECR scanning
o Docker image scan
- LAB: Deploy a website with Database on Docker
- Image registry
- Setup Repository
o ECR
o JFrog
o Nexus
o Dockerhub
- AWS Elastic Container Service
- Docker compose
Docker Images
- Image? What is it in Docker World?
- Official Docker Image Specification
- Centre for Images: The Docker Hub (Public)
- List of Official Docker Images
- Working with Images: image layers, tagging, Pushing to Docker Hub
- Building Images: The Dockerfile Basics
- Build Your Own Dockerfile and Run Containers
DOCKER NETWORKING
- Overview
- Data-Link Layer Details
- Network Layer Details
- Hostnames and DNS
- Local Host <–> Container
- Container <–> Container
- Container <–> Container: Links
- Remote Host <–> Container
DOCKER VOLUMES
- Volume Concepts
- Creating and Using Volumes
- Changing Data in Volumes
- Removing Volumes
- Backing up Volumes
- SELinux Considerations
- Mapping Devices
Docker Containers & Internals
- Container VS. VM
- Detached and Interactive Modes
- What Happens When We Run a Container?
- What`s Going on In Containers: CLI Process Monitoring
- Getting a Shell Inside Containers
- Container Lifetime & Persistent Data Using Volumes
- Docker container Networking, default & user defined networks
Docker Compose
- Spin up multiple containers with Single command
- Docker Compose and the docker-compose.yml File
- Running Compose Commands
- Adding Image Building to Compose Files
Docker Swarm
- Introduction to Swarm & Advantages
- How to create a swarm (cluster of nodes)
- How to add nodes to swarm
- How to deploy services/containers to swarm
- Docker stack deploy
- Introduction to UCP (universal control pane)
Kubernetes
- Introduction of Kubernetes
- What Is Kubernetes?
- Kubernetes What and Why
- Kubernetes Architecture
- Kubernetes Big Picture View
- Kubernetes Masters
- Kubernetes Nodes
- LAB: Install and configure Minikube
Kubernetes cont..
- The Declarative Model and Desired State
- Kubernetes Pods
- Stable Networking with Kubernetes Services
- Game Changing Deployments
- The Kubernetes API and API Server
- Getting kubectl
- LAB: Setup Kubernetes with Kubeadm and create resources
- Api Server
- Scheduler
- Controller Manager
- etcd – the cluster brain
- Getting K8s in the Cloud
- Working with Pods
- App Deployment Workflow
- Creating a Pod Manifest
- Deploying a Pod
- Deployment vs StatefulSet
- LAB: Creating PODs, Deployments and Stateful
Kubernetes cont..1
- Scaling database applications: Master and Worker Pods
- Pod state, Pod Identifier
- 2 Pod endpoints
- Introduction to YAML
- Kubernetes Deployment Theory
- Creating a Deployment YAML
- Deploying a Deployment
- Self-healing and Scaling
- Rolling Updates and Rollbacks
- LAB: Creating Deployments using YAML files
Kubernetes cont..2
- ClusterIP Services
- Multi-Port Services
- Headless Services
- NodePort Services
- LoadBalancer Services
- Helm – Package Manager
- Introduction to ECS, EKS
- Kubernetes container security
- LAB: Creating k8s services and custom helm charts
Terraform (IaC)
- Introduction to IaC
- Difference between GUI, CLI and IaC
- Terraform Overview
- LAB: Setting Up Terraform
- Deploying Infrastructure with Terraform
- Read, Generate, Modify Configurations
- Terraform Provisioners
- Terraform commands & state files.
- Destroying Infra with Terraform
- Understanding Attributes and Output Values in Terraform
- Understanding Provisioners in Terraform
- Understanding terraform HCL
- Terraform Variable
- Lab: Passing variables and using same in code
- Terraform Variable Types
- Outputting attributes
- Lab: Checking output attributes
- Data Sources
- Terraform Modules
- Interpolation
- Conditionals
- For & For-Each loop
- LAB: For condition and Loops
- Understanding DRY principle
- Remote State Management with Terraform
- Templates
- Terraform Project Structure
- Challenges with State File locking
- Terraform with Configuration management tools
Terraform -CFT
- CloudFormation Introduction
- Cloud Formation pros and cons
- CloudFormation vs Terraform
- AWS template vs Terraform
- When to choose Cloud Native Solutions over Terraform?
- Managing VPC , Subnets, Parameters And Intrinsic Functions
- Security Groups, EC2 Instances
- Managing Load Balancer
- Configuring Route53
- Managing Auto Scaling Groups
- LAB: Setting up VPC and EC2
- Demo and exercises on deploying an n-tier infrastructure
- Deploy middleware and application on AWS
- Using terraform, Ansible with Jenkins
- LAB: Setting up Jenkins with terraform and Ansible
Ansible – Introduction & Implementation
- Overview of Ansible Architecture
- Overview of Ansible Deployments
- Describing Ansible Inventory
- Deploying Ansible
- Installing Ansible
- Managing Ansible Configuration Files
- Running Ad Hoc Commands
- Managing Dynamic Inventory
- Writing YAML Files
- Implementing Modules
- Implementing Ansible Playbooks
Managing Variables and Inclusions
- Managing Variables
- Managing Facts
- Managing Inclusions
- Constructing Flow Control
- Implementing Handlers
- Automation with Ansible
- Implementing Tags
- Handling Errors
- Learn about retrieving data from external sources using Lookups.
Implementing Roles
- Describing Role Structure
- Creating Roles
- Develop and re-use custom Roles
- Deploying Roles with Ansible Galaxy
- Share work with Ansible Community using Ansible Galaxy
- Optimizing Ansible
- Configuring Connection Types
- Configuring Delegation
- Configuring Parallelism
Ansible Vault
- Implementing Ansible Vault
- Configuring Ansible Vault
- Executing with Ansible Vault
Ansible Tower
- Troubleshooting Ansible
- Troubleshooting Ansible Managed Hosts
- Implementing Ansible Tower
- Describing Ansible Tower
- Deploying Ansible Tower
- Managing Jobs in Ansible Tower
- Implementing Ansible in a DevOps Environment
Ansible Playbooks
- Develop Ansible Playbooks for advanced use cases
- Nested Playbooks
- Use Dynamic Inventory in playbooks
- Need Design discussions on Below Topics based on the practical need we can project in Orchestration Area.
- Creating Playbooks for Kubernetes Cluster Deployment using Ansible
- Creating Playbooks for Container Orchestration
SRE
- What is monitoring and it’s type
- Observability
- Infrastructure and Network monitoring
- Infrastructure monitoring Tools
- Dashboards for Infrastructure monitoring
- Miscellaneous Configurations for Infrastructure monitoring
- Application Monitoring
- Application Monitoring Tools
- LAB: Install and configure Grafana and Prometheus
SRE cont..
- Dashboards for Application Monitoring
- Configurations and plug-ins
- Serverless Monitoring
- Tools for Serverless Monitoring
- Concepts of serverless monitoring
- How to setup alerts, monitor and take corrective actions
- Synthetic Monitoring
- Tools for Synthetic Monitoring
- Understanding of the user journey and transactions
- Understanding of different application requirements
- Dashboards for Synthetic Monitoring
- Understanding of various configurations and plug-ins
- Logs Monitoring Tools
- LAB: Install and configure ELK stack
SRE cont..2
- Understand how to utilize the tool for monitoring alerts, acknowledge alerts and take action based on alerts
- Knowledge of monitoring tool usage and configuring to capture different log pattern
- Security Monitoring
- Understanding of DoS, DDoS security incidents
- Understanding of IDS/IPS/WAF
- Understanding of security monitoring aspects and what to monitor
- Awareness on PCI/PII, GDPR Compliance
- End User Availability Monitoring
- Understanding of the end user requirements
- Understanding and configuration of Dashboards
- Understanding of plug-in configuration
- LAB: Demo with Cloudwatch, Splunk, and Datadog
CI Advance
- What is Build and Release management
- Build and release management tools
- Continuous Integration, Continuous Delivery and Deployment Concepts
- Branching strategy: Gitflow
- LAB: Deployment of a website with GitHub
CI Advance cont..1
- Introduction to Maven & Grunt as build tools with examples and exercises.
- Build process using traditional tomcat based and docker container based
- Build best practices
- Sonarqube integration in CI pipeline, administration
- CI concepts and typical phases and talk on How Jenkins fits
- Static security check (Checkmarx)
- LAB: Jenkins integration with Sonarquabe for Java Project
CI Advance cont..2
- Unit testing (junit for java, jasmine for frontend etc)
- Code coverage
- Sonarqube code quality
- Functional testing automation
- Performance testing automation
- Accessibility testing automation
- Dynamic security testing
- Capstone Project: Deploy GitHub java project in Kubernetes cluster using Jenkins. Use Junit and code quality tools for testing.
DevOps – Monitoring Fundamentals
- What is Monitoring and Importance of same
- Basics of Monitoring
- Some Importance key concepts
- SRE Key Concepts for Monitoring – SLA, SLI, SLO and MTTR
- Event Management
- Monitoring vs Logging
- Importance of Logging
- DevSecOps – Fitment of Monitoring in Automation
- Continuous Monitoring and Logging Architecture
- Various tools availability and overview of same
- Cloud Native Tools vs Opensource
- DevOps IaC (Infrastructure as Code) with Monitoring toolsets
- Effective handling of Monitoring with Configuration Management tools
- Automated responses
Prometheus
- Introduction to Prometheus
- Alternate Monitoring Tools
- Basic Terminologies in Prometheus
- Architecture of Prometheus Server
- Installation and UI Walkthrough
- Exporters – Node and WMI Exporters
- PromQL – Prometheus Query Language
- Data Types in PromQL
- Selectors & Matchers
- Binary Operators
- Aggregation Operators
- Functions – ‘rate’ & ‘irate’
- Functions – changes, deriv, predict_linear
Prometheus Advance
- Client Libraries
- Exposing Metric from an App to Prometheus
- Counter Metrics Exposition
- Adding and managing Labels to Metrics
- Quantification of Instrumentation
- Recording Rules
- Writing Recording Rules
- Best Practices for Writing rules
- Alert Management
- What is Alerting?
- Writing & Firing the first Alert
- ‘for’ clause
- Adding Labels to Alerts
- Installing Alert-manager
- Adding Alert Notifier – Gmail
- Sending Alert Notifications
- Templating the Alerts
- Routing Tree for Alerts
- Service Discovery
- Prometheus HTTP API
- Custom Exporters
Cloud Inhouse Monitoring tools
- Cloud In-House Monitoring tools
- Why to use same and why same can’t be avoided?
- AWS Cloudwatch Introduction
- AWS Database Performance monitoring with Performance Insight
- PaaS Monitoring Limitation
- Cloud Monitoring with Prometheus
- Cloudwatch Exporter for Prometheus
Infrastructure Monitoring – Nagios
- Infrastructure monitoring Intro
- Nagios Core vs XI
- Setting up Nagios
- Configuring Windows & Linux Hosts
- Configuring Alerts and Email Notifications
- Plugins
- Introduction to Prometheus and Grafana
- Container monitoring with Prometheus and Grafana
Logging – Splunk
- What Is Splunk
- About Machine Data
- What does Splunk Do?
- Why Splunk
- Understanding Splunk Architecture & its Components
- Installation of Splunk and Forwarder
- Splunk Search
- Use cases and Examples
Fee: Rs 7,499 + 18% GST
100% subsidized cost for Naveen Jindal Foundation registered students
100% subsidized cost for Naveen Jindal Foundation registered students



