Chef is a systems and cloud infrastructure automation framework that makes it easy to deploy servers and applications to any physical, virtual, or cloud location, no matter the size of the infrastructure. Each organization is comprised of one (or more) workstations, a single server, and every node that will be configured and maintained by the chef-client. Cookbooks (and recipes) are used to tell the chef-client how each node in your organization should be configured. The chef-client (which is installed on every node) does the actual configuration.
Using Ruby: Just Enough Ruby for Chef
The community is one of the best features of Chef because it is populated by all of the people who use Chef. This also means that the community is a great place to bounce ideas around, ask questions, and to find ways to help make Chef better.
Knife: About Knife | Common Options | Working with Knife — Commands: bootstrap | client | configure | cookbook | cookbook site | data bag | delete | deps | diff | download | edit | environment | exec | index rebuild | list | node | raw | recipe list | role | search | show | ssh | status | tag | upload | user | xargs — Single Page: Knife Reference | Knife Quick Reference (image)
Plugins: About Plugins | Common Options | Custom Plugins | Authenticated Requests — Commands: azure | bluebox | ec2 | eucalyptus | google | hp | linode | openstack | rackspace | terremark | windows — Single Page: Knife Plugins Reference
The server is a centralized location where all of the objects needed by Chef are stored, including data that has been uploaded from the chef-repo, data that is needed by the chef-client while it configures nodes, and data that is uploaded to the server by the chef-client at the conclusion of every chef-client run.
The server acts as a hub for all of the data needed by the chef-client while it configures a node:
Enterprise Chef is a server that can be deployed behind the firewall or be accessed from the hosted platform. Enterprise Chef includes all of the core functionality included in the Open Source Chef version, but includes additional functionality like Reporting and built-in support for high availability deployment scenarios.
Install Scenarios: Standalone | Scaled Back End | Scaled Front End | Scaled Front and Back Ends | Migrate to Enterprise Chef from Open Source Chef | Upgrade for Standalone | Upgrade for High Availability
Open Source Chef is the open source server that shares many of the same capabilities as the Enterprise Chef.
The following features are available in both Enterprise Chef and Open Source Chef:
Search: About Search
The Recipe DSL: About the Recipe DSL — Methods: attribute? | cookbook_name | data_bag | data_bag_item | platform? | platform_family? | recipe_name | registry_data_exists? | registry_get_subkeys | registry_get_values | registry_has_subkeys? | registry_key_exists? | registry_value_exists? | resources | search | tag | tagged? | untag | value_for_platform | value_for_platform_family | Windows Platform Helper Methods — Single Page: Recipe DSL
Resources: About Resources | Common Functionality — Resources: apt_package | bash | batch | breakpoint | chef_gem | chef_handler | cookbook_file | cron | deploy | directory | dpkg_package | easy_install_package | env | erl_call | execute | file | gem_package | git | group | http_request | ifconfig | link | log | mdadm | mount | ohai | package | powershell_script | registry_key | remote_directory | remote_file | route | rpm_package | ruby_block | script | service | subversion | template | user | yum_package — Single Page: Resources and Providers
Community Resources (LWRPs): About LWRPs | Common Functionality — LWRPs: apt | aws | bluepill | chef_handler | daemontools | djbdns | dmg | dynect | firewall | freebsd | gunicorn | homebrew | iis | maven | nagios | pacman | php | powershell | python | rabbitmq | riak | samba | sudo | supervisor | transmission | users | webpi | windows | yum — Single Page: Lightweight Resources