The Chef API

In its most popular incarnation (and the one we will be using in this book), Chef functions as a client/server web service. The server component is written in a Ruby-based MVC framework and uses a JSON-oriented document datastore. The whole Chef framework is driven via a RESTful API, of which the Knife command-line tool is a client. We’ll drill into this API shortly, but the critical thing to understand is that in most cases, day-to-day use of the Chef framework translates directly to interfacing with the Chef server via its RESTful API.

The server is open sourced, under the Apache 2.0 license, and is considered a reference implementation of the Chef Server API. The API is also implemented as a hosted software-as-a-service offering. The hosted version, called the “Opscode Platform,” offers a fully resilient, highly-available, multi-tenant environment. The platform is free to use for fewer than five nodes, so its the ideal way to experiment with and gain experience with the framework, tool, and API. The pricing for the hosted platform is intended to be less than the cost of just the hardware resources to run a standalone server

The Chef server also provides an indexing service. All information gathered about the resources managed by Chef are indexed and searchable, meaning that Chef becomes a coordination point for dynamic, data-driven infrastructures. It is possible to issue queries for any combination of attributes: for example, VMware servers on VLAN 102 or MySQL slaves ...

Get Test-Driven Infrastructure with Chef now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.