Skip to content
Sean Escriva edited this page Jul 3, 2015 · 5 revisions

Batali

Batali is a simple, light weight cookbook resolver. It is now in a beta state, moving quickly towards a proper stable release.

What is Batali?

Batali is a cookbook resolver. It is built to be lightweight but feature rich. Batali helps to manage your cookbooks and stay out of your way, providing just enough magic for common needs when working with Chef managed infrastructure.

Batali Features

Light weight

One of the goals for batali was being light weight, in the same vein as the librarian project. This means it does nothing more than manage local cookbooks. This includes dependency and constraint resolution, as well as providing a local installation of assets defined within the generated manifest. It provides no extra features outside of that scope. If you need to upload cookbooks to the chef server, perhaps knife upload is a good tool?

Multiple platform support

Batali does not rely on the chef gem to function. This removes any dependencies on gems that may be incompatible outside the MRI platform. JRuby users rejoice!

Isolated manifest files

Manifest files are fully isolated. The resolver does not need to perform any actions for installing cookbooks defined within the manifest. This allows for easy transmission and direct installation of a manifest without the requirement of re-pulling information from sources. Version constraints can be considered locked via the manifest file and it can be checked into source control to track changes.

Infrastructure manifests

Full infrastructure resolution involves more than just a single environment, often with many moving parts. It's possible and even desirable at times for the same cookbook to be at different versions for different environments. Batali aims to solve possible issues with full infrastructure resolution. This is ideally suited for resolving dependencies from an infrastructure repository.

When working with multiple environments in a common infrastructure, often resolving a single dependency path will not provide a correct resolution. This is because environments or run lists can provide extra constraints that will result in unsolvable resolutions on individual nodes. In this case we want to know what cookbooks are allowed within a solution, and ensure all those cookbooks are available. Batali provides infrastructure level manifests by setting the infrastructure flag, either as a configuration element or as a command line option. See configuration for more information.