Progress Chef (formerly Chef) is a
configuration management
Configuration management (CM) is a process for establishing and maintaining consistency of a product's performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. The CM proc ...
tool written in
Ruby and
Erlang. It uses a pure-Ruby,
domain-specific language
A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging f ...
(DSL) for writing system configuration "recipes". Chef is used to streamline the task of configuring and maintaining a company's servers, and can integrate with cloud-based platforms such as
Amazon EC2,
Google Cloud Platform
Google Cloud Platform (GCP), offered by Google, is a suite of cloud computing services that runs on the same infrastructure that Google uses internally for its end-user products, such as Google Search, Gmail, Google Drive, and YouTube. Alongside ...
,
Oracle Cloud,
OpenStack,
IBM Cloud,
Microsoft Azure
Microsoft Azure, often referred to as Azure ( , ), is a cloud computing platform operated by Microsoft for application management via around the world-distributed data centers. Microsoft Azure has multiple capabilities such as software as a ...
, and
Rackspace to automatically provision and configure new machines. Chef contains solutions for both small and large scale systems.
Features
The user writes "recipes" that describe how Chef manages server applications and utilities (such as
Apache HTTP Server
The Apache HTTP Server ( ) is a free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is developed and maintained by an open community of developers under the auspices of the Apache So ...
,
MySQL, or
Hadoop) and how they are to be configured. These recipes (which can be grouped together as a "cookbook" for easier management) describe a series of resources that should be in a particular state: packages that should be installed, services that should be running, or files that should be written. These various resources can be configured to specific versions of software to run and can ensure that software is installed in the correct order based on dependencies. Chef makes sure each resource is properly configured and corrects any resources that are not in the desired state.
Chef can run in
client/server mode, or in a standalone configuration named "chef-solo". In
client/server mode, the Chef client sends various attributes about the node to the Chef server. The server uses
Elasticsearch to index these attributes and provides an API for clients to query this information. Chef recipes can query these attributes and use the resulting data to help configure the node.
Traditionally, Chef was used to manage
Linux but later versions add support for
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
.
It is one of the major configuration management systems on Linux, along with
CFEngine,
Ansible and
Puppet
A puppet is an object, often resembling a human, animal or Legendary creature, mythical figure, that is animated or manipulated by a person called a puppeteer. The puppeteer uses movements of their hands, arms, or control devices such as rods ...
.
[.] More than a configuration management tool, Chef, along with Puppet and Ansible, is one of the industry's most notable
Infrastructure as Code (IAC) tools.
History
Chef was created by Adam Jacob as a tool for his consulting company, whose business model was to build end-to-end server/deployment tools. Jacob showed Chef to
Jesse Robbins, who saw its potential after running operations at
Amazon. They founded a new company with Barry Steinglass, Nathen Haneysmith, and Joshua Timberman to turn Chef into a product.
The project was originally named "marionette", but the word was too long and cumbersome to type; naming the format modules were prepared in "recipe" led to the project being renamed "Chef".
In February 2013, Opscode released version 11 of Chef. Changes in this release included a complete rewrite of the core
API server in
Erlang.
On April 2, 2019, the company announced that all their products are now open source under the Apache 2.0 license.
On September 8, 2020,
Progress announced the acquisition of
Chef
A chef is a trained professional cook and tradesman who is proficient in all aspects of food preparation, often focusing on a particular cuisine. The word "chef" is derived from the term ''chef de cuisine'' (), the director or head of a kitche ...
.
Platform support
Chef is supported on multiple platforms according to a supported platforms matrix for client and server products.
Major platform support for clients includes
AIX,
Amazon Linux
An Amazon Machine Image (AMI) is a special type of virtual appliance that is used to create a virtual machine within the Amazon Elastic Compute Cloud ("EC2"). It serves as the basic unit of deployment for services delivered using EC2.
Contents
...
,
Debian
Debian (), also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software, developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of D ...
,
CentOS
CentOS (, from Community Enterprise Operating System; also known as CentOS Linux) is a Linux distribution that provides a free and open-source community-supported computing platform, functionally compatible with its upstream source, Red Hat En ...
/
RHEL,
FreeBSD
FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
,
macOS,
Solaris,
SUSE Linux,
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
and
Ubuntu. Additional client platforms include
Arch Linux and
Fedora
A fedora () is a hat with a soft brim and indented crown.Kilgour, Ruth Edwards (1958). ''A Pageant of Hats Ancient and Modern''. R. M. McBride Company. It is typically creased lengthwise down the crown and "pinched" near the front on both sides ...
. Chef Server is supported on
RHEL/
CentOS
CentOS (, from Community Enterprise Operating System; also known as CentOS Linux) is a Linux distribution that provides a free and open-source community-supported computing platform, functionally compatible with its upstream source, Red Hat En ...
,
Oracle Linux,
SUSE Linux and
Ubuntu.
Customers
Chef is used by
Facebook,
AWS OpsWorks
Amazon Web Services, Inc. (AWS) is a subsidiary of Amazon that provides on-demand cloud computing platforms and APIs to individuals, companies, and governments, on a metered pay-as-you-go basis. These cloud computing web services provide di ...
,
Prezi,
and
BlackLine
BlackLine Systems, Inc., is an American enterprise software company that develops cloud computing, cloud-based services designed to automate and control the entire financial close process. The Los Angeles–based company has 17 offices worldwide. ...
.
See also
*
Comparison of open-source configuration management software
*
Infrastructure as code (IaC)
*
Infrastructure as Code Tools
*
Ansible (software)
*
CFEngine (software)
*
DevOps
*
DevOps toolchain
*
Otter (software)
Otter is an infrastructure automation tool, designed by the software company Inedo. Built specifically to support Windows, Otter utilizes Infrastructure as Code to model infrastructure and configuration.
Otter provisions and configure servers ...
*
Puppet
A puppet is an object, often resembling a human, animal or Legendary creature, mythical figure, that is animated or manipulated by a person called a puppeteer. The puppeteer uses movements of their hands, arms, or control devices such as rods ...
*
Salt (software)
*
Juju
References
External links
*
Chef on GitHub
{{Ruby programming language
Free software programmed in Ruby
Free software programmed in Erlang
Configuration management
Orchestration software
Virtualization software for Linux
Software using the Apache license