Chef is an open source configuration management tool that emphasizes communication and collaboration between developers and operations. It works best when developers and operations work together to make infrastructure testable, versioned, repeatable and distributable. Chef has major components like the Chef server, Chef client and workstation. It uses concepts like organizations, environments, roles, nodes, recipes and cookbooks to configure nodes.