Usually CMS such as SaltStack, Puppet or Ansible consist of server and clients, but in case of Chef we’re have node type such as workstation. Infrastructure looks like this one:
workstation <==> server <==> clients
Workstation – the place where Cookbook are create. Communicate with Chef Server and nodes. workstation stores its private key in the chef-repo
Knife – utility for upload data to Chef server from chef repo directory.
Chef-repo contains: Cookbooks (including recipes, attributes, custom resources, libraries, and templates), Roles, Data bags, Environments
Role – webserver, db, balancer …
Environments – test, stage, prod.
Ohai – client’s module which scan node properties such as hardware and OS parameters and save it to attributes.
run-list – list of recepies
berkshelf – cookbook dependency manager
attributes – detail about node
recipes – installation scripts
resource – desirable state of configuration object
cookbook – a bunch of recipes
bootstrap – client installation on the node