is an automation platform that lets you describe your infrastructure as executable code.
Chef uses resources, recipes and cookbooks
to describe how your infrastructure should behave. A resource describes some piece of infrastructure, such as a file, a template, or a package. A recipe is a file that groups related resources, such as everything needed to configure a web server, database server, or a load balancer. A cookbook provides structure to your recipes and makes it easy to reference external files, such as a web server's home page.
A typical Chef configuration is comprised of a workstation, a Chef server and nodes. Your workstation is where you author cookbooks and administer your network. The Chef server acts as a central repository for cookbooks and other information about the nodes. A node is any computer that is managed by a Chef server.
With Chef, most of the computational work occurs on the nodes rather than on the Chef server. The Chef server simply stores the recipes that the nodes periodically execute. This decentralized approach means that the Chef server never becomes a bottleneck and makes Chef able to manage a very large number of nodes.
Chef has significant advantages over isolated scripts. Chef takes care of many of the complexities of configuring a server for you. Chef recipes have a global view of your network because they interact at run time with the Chef server, which is important when accounting for dependencies between network compo¬nents. Standalone scripts can only give you a piecemeal view.
Recently, Chef has expanded its offerings to include the Chef Compliance server
and Chef Delivery. The Chef Compliance server enables you to scan your entire infrastructure for security risks and compliance issues, get reports, and write automated tests. Chef Delivery lets you manage changes to both infrastructure and application code, giving operations and development teams a common platform for developing, testing, and deploying cookbooks and applications.