Chef client runs on all of the nodes (servers) of your network that are managed by your Chef server. As it runs, Chef client queries Chef server for the latest set of recipes (configuration instructions) that apply to the current node. The Chef server determines the applicable recipes based on the node's role, (e.g. “web server” or “load balancer”). Chef client executes the applicable recipes in the same order every time, which simplifies how recipes are written and provides consistent, repeatable results.
Chef client periodically runs a node's recipes so that the node incorporates the latest configuration information from Chef server. Recipes only make configuration changes when the node is out of spec, so it's safe to run them repeatedly. For example, a recipe that installs a particular service on a node will only do this if the service doesn't already exist or if it's out of date. Recipes either do nothing or bring the network closer to the desired configuration state. In other words, Chef uses a “convergent” model of configuration. As changes propagate through the nodes, the network as a whole converges to the desired configuration state. By default, the Chef client pulls configuration updates from the Chef server every 30 minutes.
To support system integration, Chef makes network-wide configuration searchable and makes search results available to the recipes. Combining search with periodic configuration updates is very powerful. For example, since configuration recipes run periodically, load balancers will automatically notice new web servers and begin to route requests to them. Here's an example.
A new JBoss app server has just come online. The next time the Chef client runs on the other nodes, the recipes notice that a new app server node has been added and update their lists of IP addresses. The new server becomes integrated into the environment.
If you've decided to use Chef, you might be wondering how most companies go about getting started. Here's one way.
Chef provides tremendous visibility about what's running on your network. It includes a powerful utility known as Ohai that harvests a node's configuration data and reports it back to the Chef server. The Chef server aggregates and indexes the information. Just knowing what's on your network is a huge leap forward. You can search against all of that information. You can identify any anomalies and unexpected configurations. You can also add your own searchable attributes to Chef. There are countless ways to benefit from Chef's integrated, holistic view of your infrastructure.
All it takes to get to this point is to create a Chef server. We make it easy for you be offering a free trial of Enterprise Chef, which includes the option of having Chef host and maintain your Chef server for you.
After you begin to get insight into your network, it's time to harvest the low-hanging fruit. Many system administrators have routine tasks that only take a few minutes but which must be done frequently. Simple tasks are the easiest to automate. If you spend an hour automating a 5-minute task that you do 100 times per week, you've paid for your time investment in the first day.
Once you've become accustomed to using Chef's insight into your network and have automated some of the easier, routine tasks, it's time to scale up to more ambitious automation. Here's where the DevOps philosophy starts coming into play. You can eventually transform your way of working to include continuous delivery, where configuration code and application code are treated similarly in an Agile development process.
There's a large and active community of Chef users who can help. In addition, Chef is there every step of the way with professional services as well as standard and premium support for Chef. Your success is our success.
Whether you're automating an on-premises, cloud or hybrid solution, or if you're starting from scratch, Chef can help you create and execute an effective plan.