The Chef Infra Server acts as a hub for configuration data. The Chef Infra Server stores cookbooks, the policies that are applied to nodes, and metadata that describes each registered node that is being managed by Chef Infra Client. Nodes use Chef Infra Client to ask the Chef Infra Server for configuration details, such as recipes, templates, and file distributions. Chef Infra Client then does as much of the configuration work as possible on the nodes themselves (and not on the Chef Infra Server). This scalable approach distributes the configuration effort throughout the organization.
The front-end for the Chef Infra Server is written using Erlang, which is a programming language that first appeared in 1986, was open sourced in 1998, and is excellent with critical enterprise concerns like concurrency, fault-tolerance, and distributed environments. The Chef Infra Server can scale to the size of any enterprise and is sometimes referred to as Erchef.
The following diagram shows the various components that are part of a Chef Infra Server deployment and how they relate to one another.
|Bookshelf is used to store cookbook content—files, templates, and so
on—that have been uploaded to the Chef Infra Server as part of a
cookbook version. Cookbook content is stored by content checksum. If two
different cookbooks or different versions of the same cookbook include
the same file or template, Bookshelf will store that file only once. The
cookbook content managed by Bookshelf is stored in flat files and is
separated from the Chef Infra Server and search index repositories.|
All cookbooks are stored in a dedicated repository.
Erchef is a complete rewrite of the core API for the Chef Infra Server, which allows it to be faster and more scalable than previous versions. The API itself is still compatible with the original Ruby-based Chef Infra Server, which means that cookbooks and recipes that were authored for the Ruby-based Chef Infra Server will continue to work on the Erlang-based Chef Infra Server. Chef Infra Client is still written in Ruby.
Even though the Chef Infra Server is authored in Erlang, writing code in Erlang is NOT a requirement for using Chef.
|Messages||chef-elasticsearch wraps Elastisearch and exposes its REST API for indexing and search.|
All messages are added to a dedicated search index repository.
|Nginx||Nginx is an open-source HTTP and reverse proxy server that is used as the front-end load balancer for the Chef Infra Server. All requests to the Chef Infra Server API are routed through Nginx.|
|PostgreSQL||PostgreSQL is the data storage repository for the Chef Infra Server.|
Was this page helpful?