My team at Dell is working diligently to release Crowbar (Apache 2) to the community.
- We have ramped up our team size (Andi Abes was spotted recently posting on the Swift list).
- We are collaborating with partners like Rackspace, Opscode and Citrix
- We brought in UI expertise (Jon Roberts) to improve usability and polish.
- We are making sure that the code is integrated with our Dell OpenStack Solution (DOSS).
- We are lining up customers for real field trials.
The single most critical aspect of Crowbar involves a recent architectural change by Greg Althaus to make Crowbar much more modular. He dubbed the modules “barclamps” because they are used to attach new capabilities into the system. For example, we include barclamps for DNS, discovery, Nova, Swift, Nagios, Gangalia, and BIOS config. Users select which combination to use based on their deployment objectives.
In the Crowbar architecture, nearly every capability of the system is expressed as a barclamp. This means that the code base can be expanded and updated modularly. We feel that this pattern is essential to community involvement.
For example, another hardware vendor can add a barclamp that does the BIOS configuration for their specific equipment (yes! that is our intent). While many barclamps will be included with the open source release to install open source components, we anticipate that other barclamps will be only available with licensed products or in limited distribution.
A barclamp is like a cloud menu planner: it evaluates the whole environment and proposes configurations, roles, and recipes that fit your infrastructure. If you like the menu, then it tells Chef to start cooking.
Barclamps complement the “PXE state machine” aspect of Crowbar by providing logic Crowbar evaluates as the servers reach deployment states. These states are completely configurable via the provisioner barclamp; consequently, Crowbar users can choose to change order of operations. They can also add barclamps and easily incorporate them into their workflow where needed.
Barclamps take the form of a Rails controller that inherits from the barclamp superclass. The superclass provides the basic REST verbs that each barclamp must service while the child class implements the logic to create a “proposal” leveraging the wealth of information in Chef. Proposals are JSON collections that include configuration data needed for the deployment recipes and a mapping of nodes into roles.
Users are able to review and edit proposals (which are versioned) before asking Crowbar to implement the proposal in Chef. The proposal is implemented by assigning the nodes into the proposed roles and allowing Chef to work it’s magic.
Users can operate barcamps in parallel. In fact, most of our barclamps are designed to operate in conjunction.
Reminder: It is vital to understand that Crowbar is not a stand-alone utility. It is coupled to Chef Server for deployment and data storage. Our objective was to leverage the outstanding capabilities and community support for Chef as much as possible.
We’re excited about this architecture addition to Crowbar and encourage you to think about barclamps that would be helpful to your cloud deployment.