Chef has three main players in its overall architecture: the nodes that are being managed (servers, desktop clients, routers, and so on), the workstation that a system administrator uses to run the knife
command, and the Chef service that is responsible for storing and managing all of the roles, recipes, and configuration data to be applied to the end hosts. The following diagram represents the Chef architecture:
The nodes communicate with the Chef service over HTTP (preferably HTTPS) using the chef-client
script provided as part of the Chef client installation. This is a Ruby script that is responsible for connecting to the configured Chef service (self-hosted or using hosted Chef) and downloading the run list that is configured for that node along with any cookbooks and configuration data it needs. Once it has done that, chef-client
will evaluate the run list in order to execute the recipes in the order in which they were specified.
The workstation also...