0. Introduction of DevOps
- What is DevOps? Acronym Dev+Ops?
- History of DevOps
- Overview of DevOps tools
- End-to-End DevOps workflow
- Who can learn DevOps?
- Importance & goals of DevOps Practices in real-time
- SDLC models, Agile and DevOps
- Opportunities, Trends and Future of DevOps
- Overview of Version Control, Build and Deployment Process, Continuous Integration and Deployment, Configuration management, Containerization, Virtualization & Cloud platform. Etc
- Roles of Cloud platforms in DevOps
- Roles and Responsibilities of DevOps Resource
- Git & GitHub Intro (SEC-A)
- What is Version Control System?
- Introduction to version control systems (VCS)
- Different version control systems in the market
- Evolution of VCS
- Roles and features of VCS in Source code management in DevOps
- What is Git & GitHub? Differences!
- Roles and Responsibilities of DevOps Engineer in Git & GitHub
Git:
- Git Basics & Architecture
- Git's unique features in Source code management
- End-to-End Git Work-flow.
- Git Vs SVN Vs Other commercial VCS
- Git Command Line & GUI
- Overview of GitHub, GitLab, Bitbucket. etc.
- Git Installation, Uninstallation, Upgradation on Linux
- Setting up Mandatory configurations & best practices
- '$git config' command to setup User, Email, Editor and Credentials
- What is Source, Stage and Local repository.
- Git Revision Structure – SHA, User, Email, Commit Message and other metadata
- Git internals. How Git generates SHA value? What is this checksum code & data integrity all about?
- Significance of Staging Index. Skipping the staging. Best practices.
- Git command line with most frequently used options in real-time
- # Check the history of a file
- $ git log –author/--grep/–since/–until/–oneline etc.
- # How do you get diff of your changes?
- $ git diff $ git diff –staged $ git diff sha. Sha
- # Removing a file in Git
- $ git rm
- - Is deletion permanent? Best practices.
- - Resurrect/restore a deleted file
- # Renaming a file in Git
- $ git mv command
- - Verify history after file rename
- # Show more details about a change
- $ git show
- # Undoing the changes
- - Revert a change from Source Area, staging area
- - Revert a committed change
- $ Git pull & fetch commands
- - Difference between pull and fetch
- - Difference between clone and pull
- $ fork in GitHub and clone
Git & GitHub Branch (SEC-B)
- Branching and Merging
- What is a branch? When and Why do we create a new branch
- Importance of master branch & stable code
- Branching Strategies/Models – Pros and Cons
- Switching branches for parallel development
- Merging from one branch to another. Best practices
Git & GitHub Adv. (SEC-C)
- Git stash : temporarily shelves (or stashes) changes
- Git Squash : to combine multiple commits into one.
- Git Patch : text files that contain code and Git commit metadata
- Got Cherry pic : enables arbitrary Git commits
- Git Collaboration : different people can work on the same project together.
GitHub Action. (SEC-D)
- GitHub Actions is a CI approach to automate your build,
- test,
- and deployment pipeline
- Ansible (SEC-A)
Overview of Configuration Management with Ansible
- What is a configuration Management tool. What is Ansible?
- How Ansible Works (ssh protocol)
- What is Infrastructure as a code (IAC)
- Ansible as CD tool
- About some important Ansible Terminology
- Ansible Architecture
Ansible Environment Setup
- Installation and configuration
- Ssh pass less connection from master to node
- Ansible Inventory
- Ansible Configuration file
- Ansible ad-hoc commands
Ansible Playbooks
- what is configuration, deployment, and orchestration
- YAML Structure, Playbook structure
- Ansible playbooks - quick start
- Playbook syntax checks
- Variables in Ansible
- Ansible Sections - target, tasks, handlers
- Patterns: targeting hosts and groups
- Defining Variables in Ansible Code, Use Cases
- Debug the console logs
- When clause in Playbook
Ansible Vault
- What is vault in ansible
- Why use vault
- Advantages/Disadvantages of vault
- Lab
Conditional loops and Handlers
- What are Conditionals in Ansible
- What are Loops in Ansible
- Handlers in Ansible
- Ansible Vaults- Introduction and Importance of vaults in Ansible
- Vault - commands and usage in playbooks
Ansible (SEC-B)
Dynamic inventory
- What is dynamic inventory
- Scenario based dynamic inventory
- How it will work
Ansible Performance tuning
- How to speed up your playbooks
- OR
- How to reduce execution time of playbook
- Ansible config file
- Ansible fork
Ansible Roles/ galaxy
- Introduction on Ansible Roles
- Role directory structure
- storing and finding roles
- Using roles
- Running a role multiple times in one playbook
- Include and Dependency Management
- Passing different parameters
Ansible High Availability (HA)
- Introduction on ansible tower
- Tower installation and Tower Dashboard
Ansible Miss.
- Ansible ssh password less when target is 1000 node
- Execute a shell script from playbook
- Create an ec2 by ansible (iac)
- Jenkins as CI tools (SEC-A)
- Install and configure Jenkins
- Exploring Jenkins Dashboard UI
- Introduction to Plugins. What is a plugin?
- Plugins Installation, Un-installation and upgrade
- Different ways of plugin installation and management
- Finding suitable plugins and interpreting plugins documentation for real-time scenarios
- CI/CD pipeline (free style)
- CD/CD pipeline (scripted & declarative)
- Jenkins file & variable
- e-mail notification from Jenkins
- Integrate sq, af/s3 to Jenkins
Jenkins (SEC-B)
- Jenkins HA config (Master/Slave)
- Jenkins security (using https)
- Matrix based and Project based security
- Jenkins PT
- Multi branch pipeline
- Custom home directory of Jenkins
- Install and configure Jenkins on docker container
- How and what to take backup of Jenkins and restore
- monitor Jenkins ci/cd and resource
- Docker (SEC-A)
- Introduction & Architecture
- VM vs Container, Adv of container
- Installation and create & manage container
- Docker file & images
- Create image/container of custom app (python, java, NodeJS)
- Docker container in-depth:
- > Layer
- > Network (Ip, ping to container, google)
- > Verifying resource utilization and usage statistics - stats command
- > Allocating of resource (CPU, ram, Disk)
- > Create a container with custom Ip
- > Updating computing constraints on a running container
- Docker Volume creation, Inspecting Volumes
- Mounting Docker volume to containers
- Read-only volume
Docker (SEC-B)
- Reduce size of image (by docker file/Docker Slim)
- Container process management
- Docker composes
- TS and logs
- CI/CD projects using Docker as end point
- Another ci/cd with Docker using Jenkins variables
- SonarQube
- What is sq ?
- Installation & configuration.
- Architecture of sq.
- SonarQube components.
- Check the code quality.
- SQ with CI(Jenkins).
- Artifact
- What is AF
- AWS S3 as AF
- Integrate to Jenkins
- Terraform (SEC-A)
- Concept and Advantages of Infrastructure as Code
- Installation, architecture of Terraform and manage provider
- Initialize a Terraform working directory, Describe Terraform workflow, validate a Terraform configuration
- Generate and review an execution plan for Terraform Execute changes to infrastructure with Terraform Destroy
- Terraform managed infrastructure
- Launch AWS S3 and modify the same
- Launch EC2 in AWS with key and security group and connect
- Launch AWS VPC, subnet, gateway, routing
- Launch ec2 and RDS on custom VPC
Terraform (SEC-B)
- Terraform state file (local/remote)
- Terraform variable, loop, for each loop, count, conditions
- Terraform import (existing infra to terraform tfstate)
- Terraform taint and untaint
- Terraform Data source
- Kubernetes (SEC-A)
- Architecture
- Installation:
- Minikube
- Kubeadm
- EKS
- Attach / detach node
- Deployment(nginx), replica set, service
- pod in depth, AH, AS
- Taint master/worker
- Deployment (python/java/NodeJS)
- Volume (PV, PVC; using AWS EBS, EFS)
- RBAC, create k8s user
SEC-B:
- Service in depth (cip, np, lb, ingress)
- Backup cluster, etcd
- upgrade cluster (1.27 to 1.28)
- TS and Auto heel scale
- cicd. end point Kubernetes pod
- Helm chart
- What is helm & helm chart?
- Architecture of Helm chart
- Advantages of Helm chart
- Basic commands of Helm
- Install helm and test
- Install app(nginx) using helm chart
- How to create my own Helm chart
- From application (python/java/node js/…) to helm chart
- Create helm chart from manifest (yaml)..helmify
- Create local helm repo
SEC-C:
- Taint n Toleration; schedule (node selector/pod affinity)
- Node selector and Node affinity
- Resource quota, limit range, max limit (namespace wise or pod wise)
- White/black list in ingress controller
- HPA, ConfigMap, secret
- Upgrade plan (maxSurge)
SEC-D:
- Kubernetes upgrade policy
- maxSurge and maxUnavailable
- Configure Kubernetes for Rolling Update
- Advance Scheduling:
- Node Selector, Node Affinity, Pod Affinity/Anti Affinity, Taint and Toleration
- Kustomise
- Daemon set in Kubernetes
- TLS etcd/Api, kubeconfig file
- What Are Secrets in Kubernetes?
- Kubernetes service account, command n arguments
- Prometheus, Grafana, Loki, promtail
- Download Prometheus and node exporter
- Install Prometheus node exporter
- Install and configure Prometheus
- Configure Prometheus for Grafana
- Check Prometheus metrics in Grafana Explore view
- Start building dashboards
- GitOps:
- gitAction
- Argo CD install and configure with k8s
- Deployment on k8s: git action as CI tool and argocd as cd tools