Understanding Chef Server,Client and Node

Chef is very important tool in Dev Oops. Chef is used to automate your build, deploy, and manage your infrastructure. Chef help to infrastructure automation and configuration management tasks. Chef supports Mac OS X, Windows, and many flavors of Linux and UNIX. Chef is a Ruby-based configuration management engine.

There are following type terminology used in Chef:

Chef-Server :

Chef server acts as a hub for recipes and configuration data. The server stores cookbooks, the policies that are applied to nodes, and metadata that describes each registered node(chef-client) that is being managed by the chef server. Nodes use the chef-client to ask the Chef server for the latest recipes/templates and checks the node recipes is out of date, if yes then the Chef client runs them on the node to bring it up to date.

Workstations :

A workstation acts as a development machines where knife is configured. This interact with server and synchronize chef-repo. You can do following task on workstation:

  • Keeping chef-repo synchronized with server using version control
  • Developing Cookbook and recipes using knife
  • Upload Cookbook and recipes using knife
  • Apply bootstrap operation on nodes

Node:

A Node can be a virtual server or cloud machines where you want to deploy code or apply configuration changes using chef client. A chef-client is an agent that runs locally on every node that is registered with the server.
RSA public key-pairs are used to authenticate the chef-client with the server. This Key is used when chef-client needs access to data that is stored on the server. This prevents unauthorized access of data.