1. 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
2. Basic Linux Administration
• History of UNIX/LINUX
• Features and Benefits of UNIX/LINUX
• Different flavors of UNIX/LINUX
• Difference between UNIX, DOS, Windows and LINUX
• Architecture of UNIX
Commands: pwd, ls, cd, cat, cp, mv, mkdir, rm, rmdir, touch, locate, find, grep, sudo, df, du, head, tail, diff, tar, chmod, chown, jobs, kill, ping, ssh, useradd, sshpass, scp, ifconfig, apt-get, curl, wget, uname, top, history, man, echo, zip, unzip, hostname, useradd, userdel, man, help, uname, apt-get, chmod, who, whoami, cal, date, exit.
Setup Linux pc
• Creating Virtual Machine using Oracle Virtualbox
• AWS free-tier account creation
• EC2 Instance creation and setup
• Accessing EC2 Instance using .pem & ppk keys
• SSH command
Linux FileSystem
• Structure of UNIX File system
• Ordinary Files, Directory Files, Device Files
Vi Editor
• Editing- Insert, Append, substitute, open new line, replace
• Cursor movement shortcuts
• cut, copy, paste, undo, redo
• settings, search in current and multiple files
• Creating a file, view read-only, edit file
Working with Files & Directories
• Redirecting Output
• Redirecting Input
• STDIN, STDOUT, STDERR
• Commands: cat, touch, rm, cp, mv, ln, wc, mkdir, cd, rmdir, rm, ls, ls with options, find, locate, chmod, chown
• Mounting directories (mount, unmount)
• File & Directory Permissions (chmod, chown)
Filters, Piping, Links, Archiving & Disk Utils
• Hard Link
• Soft link or Symbolic Link
• Unlink
• Filters: tr, tee, sed, pg, more, less, head, tail, paste, cut, sort, grep, egrep
• Usage of piping
• Archive: gzip, gunzip, tar, zip, unzip with different options
• Disk usage, File/Dir size (df, du)
Process & Job Scheduling
• Foreground jobs
• Background jobs
• Killing jobs
• Nohup
• Process hierarchy (ps, kill)
• Configuring Crontab
Working with remote
• SSH – Configurations & Connecting to remote machines
• SCP – copying the files/directories to remote
• sshpass
• Curl
• Ssh-keygen
Administration & System Performance & Logging
• Types of accounts in Unix system
• Create, Modify, Delete a Group
• Create, Delete, Modify an User Account
• CPU, Memory, Disk space Check
• Performance tools (netstat, uptime, time, top)
• System Logging
3. Git & Github Version Control System
Version Control System Overview
• Introduction to version control systems (VCS)
• Different version control systems in the market
• Evolution of VCS
• Roles and goals of VCS in Source code management & DevOps
• Principles & features of Version Control Systems
• 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. A bird’s eye view
• Git Vs SVN Vs Other commercial VCS
• Git Command Line & GUI
• On-premise Vs Hosted Git Solutions
• Overview of GitHub, GitLab, Bitbucket. etc..
• Test your knowledge! Git Jargons. How much you can talk?
• 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/–grep 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 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
• – Revert a change from staging area
• – Revert a committed change
$ Git pull & fetch commands
• – Difference between pull and fetch
• – Difference between clone and pull
• – Pull and Fetch best practices
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
4. Jenkins & CI/CD Process
• What is Continuous Integration (CI), Continuous Delivery (CD), Continuous Deployment (CD)
• Difference between CI and CD
• End-to-End CI & CD Pipeline concepts
Jenkins installation and setup
• Jenkins Installation and Configuration in Production
• Tomcat and JDK installation. Setting up environment variables.
• Exploring Jenkins Dashboard UI
• Git, Maven and & Build tools Installations & integration
• Different types of Jenkins Jobs. Freestyle, Pipeline, multi-configuration projects
• Creating Jenkins Pipeline jobs and understanding all project options
• Configuring automated Builds for WAR package creation
Jenkins Administration
• Jenkins global configurations and administration settings
• Build tools configuration in Manage Jenkins
• Jenkins job build steps, triggers and post build actions
• Setting up System notifications for users
• Email configuration for sending CI/CD notifications
• Jenkins backup mechanisms and restoration policies
• Jenkins migration and upgradation
• Setting up Security for Jenkins
• Matrix based and Project based security
• Jenkins authorizations to Dev.
Jenkins pipeline
• Advantages of build pipelines
• Creating pipeline projects using GUI
• Manual/GUI pipeline Vs scripted pipeline
• Groovy scripts DSL and syntax
• Creating Parameterized build jobs
Jenkins Plugins & CLI
• 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
• Use cases and applying Jenkins CLI for real-time scenarios
• Explore Jenkins CLI options
Distributed Builds & Master/Slave concept
• When do we implement distributed builds?
• Setting master and slave nodes. Best practices
• Running builds in parallel on distributed environment
• Setting up and using SSH agents, cloud agents
• Load balancing and fine tuning builds and deployments using master and slave
5. Docker
Introduction to Containerization & Docker
• Basics of Virtu
• Difference between Virtual machine (VM), Physical machine and Docker container
• What is containerization?
• What is Docke
Docker Installation in Production
• Docker supported platforms
• Docker prerequisites in production and commands to verify the same
• Docker Installation & Uninstallation in production
• Configuring Docker to be executed without sudo
Getting Started with Docker containers
• Creating first container
• Cgroup & Namespace Kernel features for containers
• Root file system, networking and processes isolation.
• Docker image concepts. Shipping the application code with dependencies
• Difference between Docker Image and Container
• Creating any flavor of Linux containers on any linux host
• Creating Linux containers on Windows. Concepts involved
Container management commands
• Shutdown Docker container
• Listing all containers in host
• Listing only running containers
• Listing last few number of containers
• Inspecting docker container information
• Listing last created container
• Creating a container with our own name
• Renaming a container
• Deleting one, all, stopped and running containers
• Starting, stopping and restarting containers from host
• Attaching to a running container
• Keyboard shortcuts
• Inspecting container processes from host
• Stopping the container gracefully and forcibly
• Find more about a container. Understanding container inspect JSON format
• Creating and Pushing a running container in daemon mode
• Creating demonized containers
• Pushing container in sleep mode
Allocating Memory, CPU & Disk space to containers
• Verifying resource utilization and usage statistics – stats command
• Allocating Memory
• Allocating CPU
• Allocating Disk space
• Updating computing constraints on a running container
Docker Volumes
• Docker Volume creation
• Inspecting Volumes
• Mounting Docker volume to containers
• Read-only volume
Docker Images
• Understand more about Docker images – real-time use cases in DevOps
• Advantages of Docker images in application deployments
• Docker Image creation techniques
• Dockerfile instructions and usage
• Solving ‘Works in my machine problem’ with Docker Images
• Restoring environments with Docker images
• Auto scaling environments using Images
• Setting up dev environments with images. Docker Advantage!
• Creating and setting up account in Docker-hub
Project:1 – creating custom Docker image for Nginx web application
Project:2 – Creating custom Docker image for our own web application
Jenkins CI/CD Pipeline integration with Docker
• Creating disposable environments using Docker images
• Integrating Docker with Jenkins CI/CD Pipeline
• Writing deployment scripts for provisioning environments with images
6. Ansible
Overview of Configuration Management with Ansible
• What is a configuration Management tool. What is Ansible?
• How Ansible Works
• What is Infrastructure as a code
• About some important Ansible Terminology
Ansible Deployment
Ansible Architecture
Pre-Requisites for controller Node
• Test Environment Setup
• Installation and configuration
• Ansible Configuration file
Pre-Requisites for Managed Node
• Ansible Inventory
• Ansible Communication
• Communication checks with password Authentication
• Communication with key-Based Authentication
• Ansible Architecture
• Overriding the Default HOSTS File
• The Default System Ansible.Cfg File
• Overriding the Default Roles Path
Ad-hoc Execution with Ansible
Why use ad-hoc commands? Syntax of ad-hoc commands
• Use cases for ad-hoc tasks
• Copying and Executing Modules:
• Running first Ansible commands
• Rebooting servers
• Managing files,Managing packages
• Managing users and groups
• Managing services
• Gathering facts
Working with 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
Conditional loops and Handlers
• What is 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 Roles and Ansible Tower
• 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
• Introduction on ansible tower
• Tower installation and Tower Dashboard
7. Introduction to Teraform