Chef Essentials (CHEF) – Outline

Detailed Course Outline

Chef Introduction

  • Overview and expectations for the class
  • The Chef Lab System Architecture
  • Group lab: Pre-built workstation

Using Chef Resources

  • Using Chef to install packages on your virtual workstation
  • Using the chef-client command
  • Creating a basic Chef recipe file
  • Defining Chef Resources
  • Test and repair
  • Lab: The 'file' resource

Building Cookbooks

  • Modify a recipe
  • Collaboration and version control
  • Generating a Chef cookbook
  • Defining a Chef recipe that sets up a web server
  • Group exercise: Version Control
  • Lab: Set up Git
  • Lab: Setting up web servers

Chef client

  • Locally applying multiple cookbooks' recipes with chef-client
  • Applying a run list
  • Including a recipe from within another recipe
  • Lab: Update the apache Cookbook

Testing Cookbooks

  • Using Test Kitchen to verify your recipes converge on a virtual instance
  • Reading the ServerSpec documentation
  • Writing and execute tests
  • Where do tests live?
  • Group exercise: Test configuration
  • Lab: Converge the kitchen
  • Lab: Commit your work
  • Lab: Testing Apache

Details About a System

  • Managing large numbers of servers
  • Capturing details about a system
  • Using the node object within a recipe
  • Using Ruby's string interpolation
  • Updating the version of a cookbook
  • Lab: Update the Cookbook version
  • Lab:Node Details in the Webserver
  • Lab: Commit your work

Desired State and Data

  • Cleaner recipes
  • When to use a template resource
  • Creating a template file
  • Using ERB tags to display node data in a template
  • Defininge a template resource
  • Using kitchen test on the "apache" cookbook
  • Using chef-clientto apply the "apache" cookbook's "default" recipe
  • Updating the "apache" cookbook's version for this patch=
  • Committing the changes
  • Lab: Update the version

Local Workstation Installation

  • Installing ChefDK on your laptop
  • Executing commands to ensure everything is installed
  • Installing a local editor like Atom
  • Lab: You will run the following commands and report their versions: $chef, $chef-client, $knife, $ohai, $berks, $kitchen, $foodcritic, $rubocop

The Chef Server

  • Connecting to a Chef Server
  • Managing Additional systems
  • Managing User traffic
  • Uploading cookbooks to a Chef Server
  • Bootstrapping a node
  • Managing a node via a Chef Server
  • Hosted Chef
  • Lab: Uploading cookbooks and managing cookbook dependencies

Community Cookbooks

  • Find cookbooks on the Chef supermarket
  • Create a wrapper cookbook
  • Example: load balancer
  • Amazon EC2 instances
  • Replace the existing default values
  • Upload a cookbook to Chef Server
  • Bootstrap a new node that runs the cookbook
  • Discussion: Can your teams benefit from the supermarket?

Managing Multiple Nodes

  • Managing user traffic
  • Bootstrapping and updating the run_list
  • Running chef-client on a node
  • Appending values to an attribute within a recipe
  • Versioning cookbooks and uploading to Chef Server
  • Lab: Another new node
  • Lab: Test and update the load balancer
  • Lab: Run $berks install
  • Lab: Converging the cookbook

Roles

  • Assigning, defining, and configuring
  • The 'knife' role
  • Verifying roles
  • Roles for everyone
  • Lab: Define a web role

Search

  • Update a Cookbook to Dynamically Use Nodes with the Web Role
  • Describe the query syntax used in search
  • Build a search into your recipe code
  • Create a Ruby Array and Ruby Hash
  • Update the myhaproxy wrapper cookbook
  • Lab: Updating, load balancing, uploading and running the new search-capable cookbook

Environments

  • Keeping your infrastructure current
  • Creating a production environment
  • Creating an acceptance environment
  • Deploying a node to an environment
  • Updating a search query to be more exact
  • Lab: Set new nodes to production
  • Lab: Acceptance environment
  • Lab: Create a new environment file

Course wrap and further resources

  • Beyond essentials
  • Valuable reading
  • Events and online resources
  • Customizing Chef