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:
https://github.com/cloudacademy/chef-intro
If you have thoughts or suggestions for this course, please contact Cloud Academy at support@cloudacademy.com.
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!
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.