The CFEngine Design Center: component-based IT infrastructure engineering

Posted by Mahesh Kumar
June 6, 2012

We are proud to announce the immediate availability of the CFEngine Design Center, a community-driven place to exchange CFEngine code, tools and information.

The CFEngine Design Center opens the door to powerful knowledge-based IT infrastructure management without the need to immediately learn a new language. It enables system administrators to “stand in the shoulders of giants” by seamlessly reusing the knowledge and code of peers who have performed similar tasks before, and also to contribute their own knowledge back to the community. It makes it possible to set up a fully-operational CFEngine infrastructure without the need to touch a single line of CFEngine code.

Background

CFEngine has long been the standard by which all configuration management systems are evaluated. CFEngine 2 manages millions of hosts throughout the world. CFEngine 3, released only three years ago, has set a new standard in flexibility, extensibility and consistency. In CFEngine 3, the policy language acquired powerful encapsulation, abstraction and reusability features, including parameterizable bodies and bundles, implicit looping, and much more. With these improvements, it became easier than ever to write reusable, modular CFEngine 3 components.

Enter the Design Center

At its core, the Design Center is a community-driven repository through which the CFEngine community can share ready-to-use components called sketches, as well as CFEngine policy examples and tools. It is hosted on GitHub, and anyone can use its contents and contribute to it.

By these features alone, the Design Center is already an extremely valuable resource to the CFEngine community. Never before has it been so easy to share your CFEngine policy components and libraries, or to find and use those written by others.

However, we see the Design Center as the start of something much greater than simply a collection of bundles that you can use. Each sketch in the Design Center represents a piece of encapsulated knowledge about one particular part of IT Infrastructure Engineering: how to solve a particular problem or perform a certain task. When you are presented with the same task or problem, you don’t have to reinvent the wheel–you can rely on the accumulated knowledge of those before you, and also augment it. Furthermore, each sketch is not simply a “module” that does its work in isolation. Rather it integrates seamlessly into the rest of the existing CFEngine policies, being able to both draw from and contribute to the pool of information that allows CFEngine, and you as the system administrator, to have the best knowledge and make the best decisions at any given point in time.

With the Design Center, it becomes possible to build and manage reliable, scalable infrastructure using best-of-breed components, without touching a single line of CFEngine code. Whether it is configuring the operating system, managing web applications or managing a cloud infrastructure, the Design Center can help. And of course, using Design Center sketches does not prevent you from writing your own policies–you still have access to the full power of the CFEngine policy language. Because all sketches are open source, you can even look at them as learning aids for advanced CFEngine techniques that you can later use in your own hand-written policies.

To help you get started, we have developed the cf-sketch tool to manage sketches on your systems.

Whether you are just getting started with CFEngine or are a veteran writing CFEngine policies, the Design Center has something for you. We invite you to learn more about it, start using it, learn about the tools available, and even write and contribute your own sketches.

We look forward to your participation and feedback! We are just at the beginning of this exciting new journey. If you have any comments, please let us know at design-center@cfengine.com.