Thoughts about configuration management

Current configuration management tools solve a huge problem, providing a way to place repeatable, eventually coordinated application and server setup on large scale environments.

Although we have come a long way since handcrafting our servers, even with Chef or Puppet, I still feel like we’re chasing our tails.

Virtual Human

Before we had configurable software, we needed to edit a few source files or headers, change a few constants and recompile. Then configuration was presented, as means for a user to update the runtime features of a software without modifying the software itself. For the most part, software configuration stopped there. Even today, with what seems to be the proper way to handle configuration on multiple servers, we’re still editing text files and calling a shell command to restart or reload the service on the local machines.

Read more

Using S3 as a cookbook store backend for chef-server 11

chef-server is a modular service - various tasks are delegated to different sub-services, one of which is Bookshelf, Chef’s cookbook store in charge of storing and serving cookbook files. Bookshelf’s API is S3 compatible by design (I can only assume Opscode are using S3 for their SAAS) and can be replaced with S3. Using S3 as the backend store makes sense for clustering, but there’s very little information on the web on how to configure chef-server to use it. Luckily, the configuration is not very complex.

Read more

Using include_recipe in Chef LWRP

A big part of Chef’s resources internal nuts and bolts has been change over the last year. One of the most welcome changes has been recipe_eval - a mini Chef run that can be used inside Chef LWRP. This mechanism has been put to good use in use_inline_resources dsl directive in LWRP, in chef-stage and in inline_recipe.

Now that LWRPs have become so powerful, there aren’t many reasons to use definitions. The most common reason people use definitions and not LWRP is the absence of include_recipe - which now is available in LRWPs. Lets explore this:

Read more