DevOps Pipeline 3-day: Github-Chef-Jenkins-Docker

DevOps Pipeline 3-day: Github-Chef-Jenkins-Docker

Summary

This 3-day class will enable DevOps teams to master a truly practical and useful End-to-End DevOps Pipeline to create, test and deploy Chef, Java and Docker code through Continuous Integration / Continuous Deployment using Jenkins. There are also 2 and 4 day versions of this course.

Description

This instructor-led, hands-on technical class will give DevOps Engineers, System Operations and Code Developers the ability to:

  • Automate an entire End-To-End CI/CD (Continuous Integration/Continuous Deployment) Pipeline using Github, Chef, Jenkins & Docker
  • Maintain code using Git and Github
  • Create, test and deploy Chef cookbooks through a Jenkins CI/CD pipeline
  • Automate Integration Testing with Inspec and Test Kitchen on Jenkins
  • Compile, test, package and permanently store Java applications using Maven
  • Create, store and run Docker images and containers
  • Store artifacts in JFrog Artifactory
  • Send notifications automatically to update your team about a pipeline's status with Slack and SMTP Email

Topics covered:

 

  1. Course Introduction
    • Github-Chef-Jenkins-Docker: A DevOps Pipeline
    • Course Purpose
    • Agenda
    • Introductions
    • Lab Environments
  2. Technology Overview
    • Git - Source Control Management
    • Chef - Configuration Management
    • ChefSpec and Inspec - Cookbook Testing
    • Jenkins - Continuous Integration
    • Docker - Containerization
    • An End-To-End CI/CD (Continuous Integration/Continuous Deployment) Pipeline
  3. Git
    • Purpose and overview of Git
    • Use cases for Git
    • Git flow
    • Quick look at Github
    • Other Git providers
    • Installation and configuration
    • Finding help on Git
    • Creating Local Git Repositories
    • Basic Commands - add, commit, status, log
    • Comparing commits: git diff
    • Using a Repository - git push
    • Branching and Merging
    • Using SSH keys with Git private repositories
  4. Chef
    • Chef Architecture and call flow
    • Chef Use cases
    • Resources
      • Resource overview
      • Structure of a resource
      • Idempotence
      • Example resources
    • Recipes
      • Recipe overview
      • Creating an Apache recipe
      • Converging with chef-client
    • Cookbooks
      • Cookbook overview
      • Creating cookbooks - the chef generate command
      • Key cookbook directories and files
      • Chef-client - converging a chef-managed node
      • DSL Elements: include_recipe, guards (not_if & only_if), notifications
    • Chef Policyfiles
    • Integration Testing
      • Integration test purpose and overview
      • Test Kitchen overview
        • Create, Converge, Verify, Destroy, Test
        • Managing the .kitchen.yml file
        • View available tests
      • Writing integration tests for the Apache cookbook
    • Chef Server
      • Purpose and call flow
      • Create a user and an organization on Chef Server (manage.chef.io)
      • Downloading a Chef starter kit
      • Using a local Chef repository
    • Uploading cookbooks to Chef Server
    • Bootstrapping Linux Chef-managed nodes
  5. Jenkins
    • Jenkins Overview, Use Cases and History
    • Plugin Architecture
      • Key plugins
    • Initializing a Jenkins server
    • Projects / Jobs
    • Freestyle Jobs
    • CI/CD as Code - Pipeline Projects
    • Declarative versus Scripted Pipelines
    • Distributing builds using Master and Agent Nodes
    • Views and Folders
    • Managing Credentials
    • Integrating with Git - Source Control Management
    • Triggers: Webhooks and Polling
    • Storing artifacts - JFrog Artifactory
    • Notifications: Slack and SMTP Email
    • Testing Chef Cookbooks with Test Kitchen in Jenkins
    • Multibranch Pipelines - reading entire repositories
    • Using Maven to Compile, Test, Package Java Applications
    • Storing artifacts in JFrog Artifactory
    • Deploying Chef cookbooks with Jenkins
      • Using credentials from the Chef Starter Kit
      • Uploading cookbooks to Chef Server
      • Initiating Chef-managed node convergence from Jenkins
  6. Docker
    • Container Use cases: what problems Docker solves
    • Docker Concepts
      • Containers
      • Images
      • Dockerfiles
      • Repositories
    • Common Docker Commands
    • Storing Docker images
    • Docker Compose
      • Launching microservices using Docker
    • Building a Docker Image using Jenkins
      • Build the image
      • Store the image
      • Run the image on an Agent
    • Deploying a Docker container using Chef
  7. Finally, we’ll put everything together into a complete End-To-End Pipeline
    • Write a Chef cookbook
    • Write Inspec tests for our cookbook
    • Push the cookbook to a branch within a Git repo
    • Configure Github and Jenkins so that upon receiving the cookbook, Github will automatically trigger Jenkins to download the cookbook, using a multibranch-pipeline type project
    • Jenkins will automatically initiate testing the cookbook using Test Kitchen
    • If the cookbook passes its tests, merge the cookbook from a feature-branch to the master branch.
    • If anything fails, Jenkins will send notifications to the class participant who wrote the code so it can be fixed and tested again
    • Once everything passes all tests, Jenkins will ask permission to continue, requiring human intervention.  Upon human approval, Jenkins will upload the cookbook to the Chef Server, and create a Docker container image
    • Jenkins will automatically trigger the Chef managed webservers, running on Linux nodes in AWS, to converge, download the cookbooks from the Chef Server and deploy the Docker container
    • Jenkins will send notifications over email regarding failures or the successful deployment of the cookbook

 

Workstation Requirements

For virtual classes, you should have a computer (on which you have root or Administrator access), a microphone, a headset and an external monitor.

For in-person classes, only a Wi-Fi enabled laptop (on which you have root or Administrator access) is needed.

 

The following operating systems have been tested as workstation systems with the hands on exercises:

Ubuntu 10.04, 12.04

Mac OS X 10.7.3+

Windows 7+

Other platforms and platform versions may work without modification. Due to time constraints we will not be able to troubleshoot issues with unlisted platforms.

 

Attendees should install the following required software before the workshop starts and verify the required access:

  • Chef Workstation from https://downloads.chef.io/
  • SSH/SCP (OpenSSH, puTTY/WinSCP or equivalent)
  • Programer's text editor (Vi/Vim, Emacs, Visual Studio Code, Sublime Text 3 or equivalent)
  • Access to AWS virtual machines, on ports 22, 80
  • Access to github.com/*
  • Access to .chef.io/
  • Access to Docker on ports 80 and 443, and *.docker.com/*
     

 

Student Requirements:

  • You need familiarity and comfort with the following:
  • Writing code (of just about any flavor) in a text editor
  • Working on the command line
  • Basic system administration – installing packages, configuring those packages, starting a service

Duration

3 Days

Upcoming Classes

No classes have been scheduled, but you can always Request a Quote.

Onsite Training

For groups of three or more

Request Quote

Public Training

Customer Comments

I don't usually like online training, but this training was great and Eric is really good, well-organized, and in control. The way he engaged each participants is amazing, and how he troubleshoot issues.

- BlackBerry Limited

Even though I've been using Chef for three years, I found this class immensely useful; not only did it allow me to examine and compare my current practices to those presented in the training, but I learned several new techniques for using Chef tools.

- Texas Comptroller of Public Accounts

Just Great!

- IBM

Excellent information presented by an experienced practitioner and an excellent presenter.

- Telmate

This was the best training class I've taken. It was online using Zoom, it was super easy to share code and collaborate. The instructor kept everything going at a perfect pace and his knowledge and expertise on the topic was evident. 22 years of training in my career and this was hands down the best class I've taken. Better than classroom training. Looking forward to more!

- CVSHealth

This was the best course I've ever taken. The instructor was just GREAT!

- IBM

Class was excellent, and the Instructor was even better! Robin Beck is the best!

- CRITEO

I will recommend this class to my organization as one of the more complete solutions to on boarding new Chef users.

- The MITRE Corporation