What is Chef?
-
So I've been asked this a couple of times recently because people see me working with Chef and attending a class this week and I figured that it would be more valuable to talk about it here since lots of people are probably wondering but not mentioning it.
First, let me state very clearly, that products like Chef (and it's competition like Puppet, SaltStack, cfEngine, etc.) are certainly not for everyone or every business. Not by a long shot. In fact, they are for a relative minority of businesses - but the minority that get a lot of attention, primarily publicly facing large scale web application companies (you know the type, Salesforce, Facebook, Google, Twitter, Netflix, etc.) So because these big, in your face, players need tools like this they become popular and get massive attention. And they are great tools, but they have a place and what Facebook does is important, but it hardly suggests that Bob's Flower Shop and Garden Center needs to use the same tools and approaches for their one, five year old Windows Server that Facebook needs for managing hundreds of datacenters full of scaling web instances.
Chef is an IT automation framework aimed, primarily, at cloud computing and DevOps roles (both of which are almost unheard of in the SMB realm.) Chef is a tool designed to allow you to "define infrastructure as code." That is, you write code (in Ruby and a Ruby DSL for Chef) that is used to define your servers. The idea behind the new cloud computing + DevOps + automation movement is that you will never log into a server again and all management, changes, installations, patching and even initial builds will be handled via definitions in an automation system. This sounds ridiculous to normal SMB admins who can't imagine trying to work this way (never log into a server, really?) and especially odd to Windows admins but if you look at the majority of modern, horizontally scaling web-based applications that run on cloud computing (think AWS, Azure and Rackspace) there is actually a ton of sense here.
The problem is, only a tiny fraction of companies run those apps on those platforms. For most of us, each server is unique and complex and would never get replicated or built out in an automated way. Tools like Chef give you a ton of power, but also bring a lot of overhead and risk. It is a great tool to know about and understand but one you need to think carefully to decide if it is useful for you. There is a huge movement in the start up, Silicon Valley and "trendy" spaces to think that DevOps and this fully automated approach will rule every shop, but in reality that is incredibly silly and short sighted. Mostly this is a massive trend and nothing more. But for shops where it makes sense, it is a beautiful thing.
What you do is make config files that get pushed to a Chef server and the Chef server applies configurations to servers. Those configurations determine what processes are running, what apps are installed, what files are where, etc. Pretty much anything you can imagine. Any configuration you can do on a box itself Chef can push out from a central server. This allows you to easily track and replicate changes. If you spend a week getting a web server "just right", you can spend seconds making a second, or a third or a twentieth one just like it. And instead of taking a full system backup, if you are not storing data on the server (if it is stateless) then you might not even need backups. Instead just let Chef rebuild a failed server from its profile in minutes!
It's a great tool that everyone should be exploring. But don't look at it and be like most people who react with a "this is stupid why does this exist" or the opposite "this is amazing and this is going to take over the world." It is a specialized tool that is very powerful and useful but hardly right for every business.
-
I spent the last two days (yesterday and today) taking a formal Chef class directly from OpsCode. So I'm decently versed in the basics.
-
Chef, or Puppet, et. al., make for good home projects too. Many of them are available for free. Chef has an unlimited use open source version and they have both a hosted and on premise non-open "Enterprise" version which is free for up to five servers under management. So for people to use at home it is extremely accessible. Nothing to stop someone from using it to manage their own home environment. Right now it supports Windows, Mac OSX, Solaris and most major Linux distros (RHEL family, Suse, Debian and Ubuntu formally but I've seen official Arch and other packages in there.) I've not seen BSD support but it might work, I don't know.
-
Thanks for the information. Me too wondering what is Chef before..
-
Thanks for the info.
-
Chef and Puppet really seam to have come out on top as the two leading players in the DevOps / Cloud automation space. They get the vast majority of the media attention.
-
Disappointed. I thought you were planning a career change involving cooking.
-
@Carnival-Boy said:
Disappointed. I thought you were planning a career change involving cooking.
Or this, love this show...
-
Should I learn Chef or Puppet?
-
-
Was that video at the Javits Center?
-
@alexntg No Idea.
-
@Aaron-Studer said:
Should I learn Chef or Puppet?
Good question. The answer is squarely... It depends.
Do you want hosted or on premise?
How many machines do you want to support?
Do you need a graphical interface?
What platforms do you want to support?
-
@scottalanmiller said:
@Aaron-Studer said:
Should I learn Chef or Puppet?
Good question. The answer is squarely... It depends.
Do you want hosted or on premise? On Prem
How many machines do you want to support? 25ish
Do you need a graphical interface? Yes.
What platforms do you want to support? Windows, and Linux.
-
Glad to hear the conference went well! I think it's a great concept, I'm looking forward to seeing developments in that sector (expecially OpenCompute).
-
@Aaron-Studer said:
@scottalanmiller said:
@Aaron-Studer said:
Should I learn Chef or Puppet?
Good question. The answer is squarely... It depends.
Do you want hosted or on premise? On Prem
How many machines do you want to support? 25ish
Do you need a graphical interface? Yes.
What platforms do you want to support? Windows, and Linux.
Then Puppet as Chef doesn't do graphical.