Overview
Cognixia’s DevOps Plus training program covers the key components, methodologies, and tools of DevOps, focussing on both mid-level and advanced-level concepts. Participants will also be able to learn foundation-level topics such as introduction to DevOps, concepts of virtualisation, its benefits and various virtualization products that play a significant role in learning and implementation of the DevOps culture in an organization. In this course, participants will learn about tools like VAGRANT, GIT, Docker and Configuration Management with Chef, SaltStack, Puppet and Ansible.
What You'll Learn
- Introduction to DevOps and its significance in software development
- Different software development methodologies, and their significance
- Introduction to virtualization, types of server virtualization, and virtualization products
- Installing and configuring VAGRANT
- Version-control systems and install GIT on Windows and Linux
- Dockers and Containerization
- Configuration management with Chef, SaltStack, Puppet, and Ansible
- Monitor with Nagios application
- Continuous integration using Jenkins
- Container clustering with Docker swarm and Kubernetes
- CI/CD pipeline automation
Curriculum
- Defining 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
- What is Virtualization?
- History of Virtualization
- What is Hypervisor?
- Types of Server Virtualization
- Benefits of Virtualization
- Important Virtualization products
- 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
- Configuring VAGRANT
- Provisioning with VAGRANT
- Creating your first VM with VAGRANT
- Operations on the VM
- Connecting to the VM
- Add required images to VAGRANT
- Using VAGRANT
- Introduction
- Version control systems
- Local, centralized, and distributed
- Installing GIT
- Installing on Linux
- Installing on Windows
- Initial setup
- Git essentials
- Creating repository
- Cloning, check-in, and committing
- Fetch, pull and remote
- Branching
- What is a Docker?
- Use-case of Docker
- Platforms for Docker
- Dockers vs. Virtualization
- Docker architecture
- Important Docker components
- Understanding the Docker components
- Installing Docker on Linux
- Understanding installation of Docker on Windows
- Some Docker commands
- Docker Hub
- Downloading Docker images
- Running Docker images
- Running commands in Container
- Running multiple Containers
- 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
- Common Chef Terminology (Server, Workstation, Client, Repository, etc.)
- Servers and Nodes
- Chef configuration concepts
- Workstation setup
- How to configure Knife
- Executing commands to test connection between Knife and Workstation
- Organization setup
- Creating Organizations
- Adding yourself and Nodes to Organizations
- Testing Node setup
- Creating Servers and adding to Organizations
- Checking Node details using Knife
- Node Objects and Search
- Adding Run List to Node
- Checking Node details
- Introduction to environments in Chef
- Salt overview
- Salt terminologies
- Master and minions
- Salt configuration concepts
- Salt access control
- Salt job management
- Salt package manager
- Salt working example
- Salt logging
- What is Puppet?
- How does Puppet work?
- Puppet architecture
- Master and Agents
- Configuration language
- Resource abstraction layer
- Transactional layer
- Installing Puppet
- Configuring Puppet master and Agent
- Connecting Agents
- Puppet configuration tree
- Puppet configuration files
- Puppet language – The Declarative language
- Resources
- Resource collectors
- Virtual resources
- Exported resources
- Manifests
- Relationships and Ordering
- Modules and Classes
- Class parameters
- Defined Types
- Advanced Puppet language concepts
- Factors
- Variables
- Conditional Statements
- IF – ELSE loops
- Case and Selectors
- More Conditionals and Logic
- Resource Relationships
- Templates
- Static contents explosion
- Using dynamic content with Templates
- Templates overview
- ERB
- Example Of Code Manifests/Modules
- NTP Module
- Users Module
- SSH
- Sudo
- Introduction to Ansible
- Ansible architecture
- Ansible terminology
- Ansible commands
- Adding Nodes to server
- Ansible installation and configuration
- Installing SSH on Nodes
- Generating Keys
- Components of Ansbile
- Inventory
- Configuration
- Modules
- Playbooks
- Global configuration
- Roles
- Tags
- Writing playbooks
- PYYAML overview
- Ansible modules
- Ansible roles
- Ansible galaxy
- Download playbooks from Galaxy
- Real time playbooks
- Introduction to Nagios
- Installing Nagios
- Obtaining Nagios
- Compiling and installing Nagios
- Basic configuration
- Creating a new host and service
- Creating a new email contact
- Verifying configuration
- Creating a host group and service group
- Creating a new contact group
- Creating a new time period
- Plug-ins and Commands
- Finding and installing a plug-in
- Removing a plug-in
- Creating a new command
- Customizing commands
- Using Nagios GUI
- Scheduling downtimes
- Generating reports
- Configuring notification
- Configuring checks
- Managing flapping
- NRPE monitoring
- Enabling remote execution
- Monitoring local services on a remote machine with NRPE
- Setting the listening address for NRPE
- Setting allowed client hosts for NRPE
- Creating new NRPE command definitions securely
- Creating a custom NRPE script
- Introduction
- Understanding Continuous Integration
- Introduction about Jenkins
- Build Cycle
- Jenkins architecture
- Obtaining and installing Jenkins
- Installing and configuring GIT
- Java installation and configuration
- Maven installation
- Exploring Jenkins dashboard
- Creating Jobs
- Running Jobs
- Adding and updating plug-ins
- Disabling and deleting Jobs
- Understanding Deployment
- Tomcat installation and configuration
- Deployment plug-ins
- Deploying a .war file from Jenkins to Tomcat
- Securing Jenkins
- How to integrate Jenkins with Ant
- How to integrate Jenkins with Maven
- Authentication
- Jenkins plug-in
- Authorization
- Confidentiality
- Creating Users
- Best practices for Jenkins
- Jenkins parameterized build
- Environment inject plug-in
- Use of Jenkins environment variables
- Deploying a specific revision
- Customizing the Jenkins UI
- Project-based matrix plug-in
- Parallel execution
- Configuring Jenkins hub and Node in the Cloud (AWS)
- Configuring a Selenium desktop node with a Linux server (AWS)
- Case Study
- Real-time implementation of automated rollback
- Multi-branch deployment
- Need for Clustering
- Setting up and initializing Swarm
- Managing Docker Swarm
- Backup and Recovery
- Managing services
- Docker Compose
- Deploying application Stack on Docker Swarm
- Introduction
- Kubernetes ecosystem: Community, contributions, governance, and integrations
- Kubernetes architecture
- Kubernetes networking and services
- Kubernetes users tools
- Configuring and deploying an application on Kubernetes
- Jenkins Blue Ocean
- PipeLine as code
- End-to-end CI/CD pipeline automation
- Automated code deployment from repository to server with configuration management
Who should attend
- Software Developers / Architects
- Project and Product Managers
- Network Engineers
- Recent graduates with degrees in IT, computer science, and other related fields
Course Description
- Introduction to DevOps and its importance in software development
- Introduction to virtualization
- Types of server virtualization
- Dockers and containerization
- Monitoring with Nagios
- Container clustering with Docker Swarm and Kubernetes
- Different software development methodologies
- Vagrant
- Version-control systems
- Git on Windows and Linux
- Configuration management with Chef, SaltStack, Puppet and Ansible
- Continuous Integration using Jenkins
- CI/CD pipeline automation