The course is part of this learning path
In this lesson you will learn what Chef is and a few companies that are using it. We will discuss the products that Chef offers including: configuration management, automation, compliance, and application deployment among others.
You will learn how to automate the management of your servers with Chef. This includes installing software, making sure services are running, setting firewall rules, and other similar tasks.
We will discuss the flexibility of Chef from installing and running software to creating entire cloud infrastructure. You will see the power of Chef through customer stories.
Finally, you will learn about the ways that Chef can cut down on your deployment times, helping shift many of your manual efforts to automation. We will delve into how Chef can manage scaling your servers, all due to using the same coding.
About the Author
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.
Welcome back! In this lesson I’ll explain what Chef is, at a high level. I’ll also talk about a few companies that are using Chef, and how they’re using it.
Before getting started, it’s worth noting that Chef is both the name of the configuration management software you’ll be learning about in this course, and the company that created it. The company used to be called OpsCode, however they’re now called Chef.
As a company, Chef has several products that revolve around problem domains such as: configuration management, automation, compliance, application deployment and more.
This course is about the configuration management software, so when I talk about Chef I’m referring to the software and not the company, unless I mention otherwise.
If you’re watching this, then you may already know what Chef is used for; however I don’t want to assume that, so here’s my succinct definition.
“Chef is a platform that allows you to automate the creation, configuration and management of your infrastructure.”
So what exactly does that mean?
Chef allows you to automate the management of your servers. That includes things such as installing software, making sure services are running, setting firewall rules, and other similar tasks.
As an example: you could tell Chef that you want all of your web servers to have the Apache web server installed and running. And Chef will make sure that happens.
Now that’s a bit of a simplistic example, however don’t think that Chef is only capable of simple server automation tasks. In fact the beauty of Chef is that it’s flexible enough to allow you to manage just about whatever you throw at it.
Chef is also capable of creating entire cloud infrastructures. For example, if you need a cloud environment running virtual machines in an auto scaling group, behind a load balancer, you could use Chef to create all of that.
To give you a better idea of what Chef is capable of, I want to share one of the customer stories found on the Chef website. I’m going to summarize it, however I’d encourage you to read some of these stories for yourself. Knowing how other people are using Chef will paint a more complete picture of its real-world capabilities.
If you’re familiar with DevOps practices then this will be an all too familiar story, from the media and marketing company Gannett.
Gannett was taking days, and in some cases even weeks for their deployments. They didn’t have visibility into what was actually being done, and by whom; they lacked a consistent set of tools that everyone used, and the isolation of individual teams made these problems worse.
Chef came into the picture when an engineer needed to replicate a production AWS environment, and lacked a way to do it consistently. When other engineers saw how he had solved the problem with Chef, it sparked conversations about how to push for more automation. The end result was a push towards DevOps methodologies, and Chef served as the core automation tool. The deployments that were taking days are now done in minutes! And that’s because all of the infrastructure changes that they need to make are specified in code. And when you have infrastructure defined as code, it allows you to apply years of software engineering practices to your infrastructure.
According to Gannett they still have a lot of work to do in order to get 100% of the company using Chef. However, they’ve made massive improvements in a relatively short timeframe.
The way Gannett was doing things isn’t uncommon. A lot of companies are still doing things manually, and deploying software on some infrequent schedule. And as was the case with Gannett, sometimes all it takes is seeing a potentially better way. And that’s what Chef did for Gannett, it started a conversation that pushed them towards DevOps.
The credit for their success goes to the people that recognized the need for a culture change, and Chef was just the flexible tool that allowed them to implement the technical side of that change.
Gannett isn’t alone in its success story. Facebook uses Chef to manage tens of thousands of servers. That means with one command Facebook can ensure that thousands of servers are configured as needed, and exactly the same way.
Another company named Intuit uses Chef as a core component in their continuous delivery pipeline, providing a consistent way to manage their applications and infrastructure.
Another great example is the company Riot Games. This is the company behind League of Legends, which is one of the most played PC games ever. They have servers running 24/7, all around the world. And they use Chef to automate the management of those servers.
The reason why Chef helps all of these companies is because manual efforts don’t scale well, though automation does. And Chef provides you with a clean and consistent way to automate the management of your infrastructure. Once you have the desired configuration written in code, it doesn’t matter how many servers you need to manage, because the same code will be executed on all of them.
In order to manage scale, you need tools capable of handling that scale. And Chef has proven that it’s capable, time and time again, in companies all around the world.
Okay, that’s going to do it for this lesson. In the next lesson I’ll cover the high level architecture Chef. And that’ll help set the stage for the rest of the course.
So if you’re ready to keep learning, then let’s get started with the next lesson!