What is CHEF? An Introduction!

Today I will discuss about a powerful infrastructure automation tool OR you can say configuration management tool.

Note: As I am a windows guy hence all my post related chef will be relevant to windows only.

Yes, CHEF, the name itself very interesting and so the technology. 😊

What is CHEF?

If we go by definition, Chef is an infrastructure automation tool that provides a way to manage and define your infrastructure as a code (IAC). It is an open source tool written in Ruby and Erlang language.

It automates the configuration and maintenance of more than one server and it uses Domain Specific Language (DSL) for writing system configurations.

To learn more about Infrastructure as a Code (IAC) read the following blog. Click on it!

So the traditional way of managing infrastructure is almost gone after the rise of such a powerful automation tool. Like chef, there are some other tools in the market such as Puppet, Ansible, Saltstack, etc.

In this blog, we will discuss the basics of chef and it’s components.

Why Chef?

If the server count in your infra is less than 500 then I can say somehow you will be able to manage your infra by some manual effort and by using scripts with the power of PowerShell in a windows environment when you don’t want to spend money.

But what if you have servers more than 5K,10K even 50K+ or more having a variety of applications and DB servers.

Here tools like CHEF comes into the rescue. In this blog post, I will be talking about the WINDOWS environment since I am a windows guy. 😊  However, the chef supports Windows as well as various flavors of RedHat and MAC.

Features of CHEF:

  1. Easily manage thousands of servers 
  2. Supports multiple OS environments like Windows, MAC, and Redhat
  3. The chef is ideal for continuous deployment.
  4. Integrates with all major cloud service providers like AWS, Azure and Google Cloud
  5. Chef transforms the infrastructure into code
  6. Chef is highly scalable, secure, and fault-tolerant
  7. Centralized management.

How Chef Works?

If you have ever managed or knows about group policy in an Active Directory environment then you can relate it with CHEF (not completely though but for understanding)

Chef operates in a client-server architecture. An agent, the Chef Client, runs on each managed node, periodically connecting to a Chef Server to download and evaluate configuration code, known as recipes. If no changes are necessary, Chef does not modify the system.

Don’t panic we will talk about Cookbook, Recipe, Role and other related components in later posts when we deep dive.

Chef has the following 3 major components as stated below:

  • Chef Server
  • Node
  • Workstation

Let’s talk about each component briefly,

Chef Server:

The location where all policy and desired settings are stored like cookbooks, recipes, policyfiles, attributes, metadata, etc.

Node:

A chef managed client wherein Chef agent get installed & communicate with chef server to download and apply the desired policies/settings (cookbooks and recipes)

Workstation:

A machine wherein Chef Development Kit (ChefDK) get installed and an administrator manages cookbooks, recipes, nodes etc.

The task that can be manage via workstation is Uploading cookbooks

  • Uploading Cookbooks
  • Uploading Roles
  • Manage Node  etc.

A simple diagram to understand what we discussed would be as follow:

That’s it for now. We will explore more CHEF tool in future blog posts.

Thank you for reading, please share if you liked it!