CFEngine is built on promises. Promises were chosen as the model for CFEngine’s configuration language, because they represent an expression of intention. But expressing your exact intentions in a safe and convergent way (according to the standards you expect from CFEngine) can sometimes be daunting and can result in haphazard nomenclature.
Our strategy in CFEngine 3 was to make it easy to express clear and concise intentions without sacrificing any of the power of the tool. Body templates are used for this. The body of a promise tells you what it is about (think “body of document” or “body of contract”) and it is composed of multiple issues that have different types. Each so-called constraint in the promise body has the form:
left_hand_side => right_hand_side
where the left hand side is a CFEngine reserved word, and the right hand side is something you define. The Open Promise-Body library is a collection of right-hand-sides that you can use to solve common problems and standardize your configuration into a set of universally used words.
We are making this library an open document so that users can contribute their experiences and solutions to it. If you want to make interntionalized translations, or extensions, you can. We encourage you to contribute back and participate in a discussion.
The CFEngine input file: | https://cfengine.com/manuals/cfengine_stdlib.cf |
HTML friendly version: | https://cfengine.com/manuals/CfengineStdLibrary.html |