Getting Started With Chef
Course Intro
2h 12m

Getting Started With Chef

If you were working in IT even ten years ago, then unless you were working for a large company, you probably didn’t need to think about how to manage infrastructure in a scalable way. Back then servers were often on-premises, or in some nearby co-location data center; deployments were infrequent and were kind of like a section of chain, with each link made of a different material, with no consideration of how that link fit into the chain as a whole. At any moment one or more links were bound to break, leaving the deployment is some unforeseen state, that could at best, be described as “broken.”

Luckily for all of us, tools started to evolve out of primordial ooze that was, a random collection of Perl, Python, Ruby, and VBScript, among the other, more esoteric languages. Among those tools was Chef. It not only was among the earliest to evolve, but it has continued to evolve even today.

Chef helps companies around the world manage their infrastructure, in a scalable way. What makes Chef such a useful tool is that it provides a consistent way to interact with nodes, across your entire infrastructure. It also provides a way to test the infrastructure code, which allows you to apply years of software engineering best practices to your infrastructure.

In this course you’ll learn how to use Chef to manage your servers. You’ll learn about how to create your own recipes to configure a server to meet your desired state. You’ll also learn about using community created cookbooks from the Chef Supermarket. By the end of this course you’ll have a solid foundation, to get you started working with Chef.

Getting Started With Chef: What You'll Learn

Lecture What you'll learn
Intro What will be covered in this course
Overview What is Chef and who uses it?
A High Level Architecture A 30,000 foot view
The Anatomy of a Cookbook How cookbooks are structured
The Recipe DSL How recipes work
Setup Setting up the workstation
Your First Recipe Creating a recipe
Refactoring Your Recipe Making the recipe cross-platform friendly
Deploying a Web Application Deploying a LAMP based application
Setting Up The Chef Server Preparing a Chef Server
Setting Up Nodes Preparing some nodes to configure
Configuring The Nodes Configuring The Nodes
Roles and Data Bags Managing nodes with roles and accessing global data with data bags
Next Steps How to keep learning


GitHub - Chef Code

The code used in the course can be found here on GitHub:

If you have thoughts or suggestions for this course, please contact Cloud Academy at


Welcome to Getting Started With Chef! I’m Ben Lambert, and I’ll be your instructor for this course!

Do you remember back in the old days of tech where servers were hand-crafted snowflakes? Even if two servers had the same role, they weren’t guaranteed to be exactly the same. I have to say, while I do miss the oftentimes amusing names that these servers were given, I don’t miss trying to figure out why one server was working and another server, that was supposed to be setup exactly the same way wasn’t working!

Luckily configuration management tools such as Chef help to make issues such as that a thing of the past. Chef is able to ensure servers meet your desired state, and if they drift away from that state, maybe because a person made a manual change, Chef can bring it back to the desired state.

This course, as its title suggests, is intended to help you to get started learning Chef. By the end of the course you’re not going to be the world's foremost expert on Chef, sorry!
However, you will be well on your way to understanding enough of the core concepts to start using it for some basic tasks. So this course is really about teaching you the fundamentals of Chef.

Here are the learning objectives for this course. By the end of the course you should be able to:
Understand the use cases for Chef
Explain the Chef architecture
Describe the components of Chef
Create a simple cookbook

Learning a configuration management tool such as Chef does come along with some prerequisites. So, here’s what you’ll already need to know before taking this course:

You should have a solid understanding of configuration management concepts
You should have programming experience
Ideally in Ruby. That doesn’t mean you need to be a professional Ruby developer. Though, you’ll find it easier if you know at least the basics

You’ll need to have at least a basic understanding of systems administration

So, how do you know if this course is right for you? Well, if you’ve ever wanted automate software installation, or server configuration, across all of your servers with one command, the you’re in the right place.
If your job title is something like: DevOps Engineer, Site Reliability Engineer, Systems Administrator, or Developer, then this course could help you to learn about a tool that will help manage your infrastructure at scale.

Here’s the agenda for the course. Now, some of these terms may not be familiar to you just yet, so don’t worry if you’re not yet familiar with them. By the end of the course, you will be!

I’ll start with an overview of Chef at a very high level, including which companies are using it, and how they’re using it.

Then I’ll drill down a bit to cover the high level architecture of Chef.

After that I’ll talk about the anatomy of a cookbook. If you don’t yet know anything about Chef, you’re going to soon see that everything is named after something related to cooking.

The following lesson will cover the Recipe DSL.

After that I’m going to setup my Mac with the software required to start developing code with Chef.

Then I’ll show you how to create your first recipe.

Then I’ll show you how to make the code a bit more cross-distribution friendly, by testing it against multiple Linux distributions.

The lesson after that will show you how to deploy a LAMP application.

And then I’ll show you how to configure the Chef Server, for basic development.

Then I’ll create some servers to run the code against.

After that I’ll explain how to use roles and data bags.

And then I’ll wrap up the course by summarizing what was covered.

In case you want to try some of this out for yourself, you can find the links to any source code used in the course, on the “About this course” tab.

There’s a lot of information to cover in this course, and I think it’s going to be a lot of fun! So if all of this sound interesting to you, then let’s get started with the first lesson!

About the Author
Learning Paths

Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.

Covered Topics