Overview
Modernization and automation owe a lot to software engineering. DevOps is software development at its best.
By breaking down the silos that plague traditional architectures and methodologies, DevOps has transformed the IT industry forever. Unifying everything in software development and software operations, it synergizes automation and monitoring at all stages of software development. This leads to enhanced agility with smaller development cycles, increased frequency of deploying, and highly stable software releases that are in sync with all business goals.
The DevOps Plus course takes a comprehensive look at the discipline that covers all key concepts, methodologies, and tools, regardless of your understanding of the IT technologies and practices. Starting with a foundational introduction to DevOps, it covers the concepts of virtualization, its benefits, and the many virtualization products that play a significant role in both learning and implementing the DevOps culture. You’ll also learn about DevOps tools such as Vagrant, Version Control Systems, Docker, Containerization, and Configuration Management with Chef, SaltStack, Puppet, and Ansible.
This course focuses on both mid-level and advanced concepts, including open-source monitoring application Nagios, its plug-ins, and its use as a GUI. The CI/CD Pipeline Automation covers the Advanced DevOps concepts that are covered in detail along with Docker container clustering using Docker Swarm and Kubernetes.
This course is highly recommended for software developers, project and product managers, software architects, and network engineers. Even new graduates with academic degrees in IT, computer science, and other related fields can opt for this course for a great future ahead in the software development industry.
What You'll Learn
- Introducing DevOps and its significance in software development
- Different software development methodologies and their significance
- Introducing virtualization, types of server virtualization and virtualization products
- Installing and configuring Vagrant
- Version-control systems and installing GIT on Windows and Linux
- Dockers and containerization
- Configuration management with Chef, SaltStack, Puppet, and Ansible
- Monitoring with Nagios application
- Continuous integration using Jenkins
- Container clustering with Docker swarm and Kubernetes
- CI/CD pipeline automation
Curriculum
- Version Control System
- Git Installation Steps
- Create a Git-hub account
- Git Configuration
- Git Workflow Commands
- Git reset command
- Git revert command
- Git - .gitignore file
- Git - diff command
- Git - git sync with Github (pull, fetch, merge, push)
- Git - Branches
- Git - Remote Branches
- Git - Cherry-pick
- Git - Stash
- Git - tags
- Build Automation Introduction
- Maven Lifecycle
- Maven Installation
- Maven Archetype
- Maven Build
- Maven Goals (compile, test, package, install, build)
- Docker Overview
- Docker Underlying Technology
- Docker-containers-and-virtual-machines
- Docker Installation
- Test Your Installation
- Docker Images
- Docker Containers
- Docker Custom Images
- Docker Save & Load Images
- Docker Registry
- Docker File
- Docker Storage
- Docker Networking
- Docker Compose
- Docker Swarm
- Docker Swarm Setup
- Docker Swarm Visualizer
- Docker Swarm Service
- Docker Swarm Service Commands
- Docker Swarm - Stacks
-
- Introduction
- Install Kubernetes with Kubeadm using Calico
- Pod Overview
- Assigning Pods to Nodes
- Replication Controller
- Replica Set
- Deployment
- Services
- Volumes
- Dashboard
- Ansible Introduction
- Ansible Installation
- Ansible Inventory File
- Ansible-Adhoc Commands
- Ansible PlayBooks
- Ansible File Module
- Ansible Jinja Template
- Ansible Vault
- Ansible Roles
- Azure Organization
- Azure Repos
- Azure Boards
- Azure Processes
- Azure Build
- Azure pipeline
- Jira Overview
- Jira Project
- Jira Issues
- Jira Workflow
- Jira Dashboards
- Jira Charts
- Jira Reports
- Jira Advance Search
- Terraform OverView
- Installation-AWSCLI Terraform
- Terraform Language Basics
- Terraform Workflow
- Terraform-Blocks
- Terraform - Blocks, Providers,Resources
- Terraform Remote Statefile
- Terraform - Lock State file on S3
- Terraform-Variables
- Terraform-Output Variables
- Terraform- Locals
- Terraform- Dynamic Blocks
- Terraform for and foreach loop
- Terraform- Conditional Statements
- Terraform-DataSource
- Terraform Modules
- Git Workflow has to be implemented
- Code Build should automatically be triggered once commit is made to master branch or develop branch.
- If commit is made to master branch, test and push to prod
- If commit is made to develop branch, just test the product, do not push to prod
- The Code should be containerized with the help of a Dockerfile. The Dockerfile should be built every time there is a push to Git-Hub. Use the following pre-built container for your application: a. The code should reside in '/var/www/html'
- Once the website is built, you have to design a test-case, which will basically check if the website can be opened or not. If yes, the test should pass. This test has to run in headless mode, on the test server.
- The above tasks should be defined in a Jenkins Pipeline, with the following Jobs
- Job 1 - Building Website
- Job 2 - Testing Website
- Job 3 - Push to Production
- Since you are setting up the server for the first time, ensure the following file exists on both Test and Prod
server in /home/ubuntu/config- management/status.txt. This file will be used by a third-party tool. This should
basically have the info whether apache is installed on the system or not.
- The content of this file should be based on whether git is installed or not.
- If apache is installed => Apache is Installed on this System"
- If apache is not installed => "Apache is not installed on this System"
- Create a Monitoring Service for the website on the Production server Architectural Advice:
- Create 3 servers on AWS "t2.micro"
- Server 1 - should have Jenkins Master, Puppet Master and Nagios Installed