The February snapshot release of CFEngine Community and Enterprise has just hit our webservers. The releases are called 3.5 Alpha2 and 3.1 Alpha2, respectively, and just as last month: this is work in progress.
Community
Those of you who keep track of the commits in our github repository or follow us on twitter will have noticed that the code refactoring has continued this month, and that some good things have happend in the wake of this:
- cf-promises can now validate partial policies (without bundlesequence)
- cf-promises can generate a JSON version of policy, and all other binaries accept .json input, which allows for better testing and tooling integration
- body classes have a scope attribute
- cf-key has new options for trust management
- reports promises are now allowed in any context
As a casualty of the refactoring work, cf-report has for the time being been taken out. To what extent report generation will be part of the 3.5.0 Community release is at this point unclear, your feedback and use-cases for cf-report are very welcome!
The road ahead promises at lots of good things that are enabled by the work so far: we are looking into building an infrastructure for pluggable promises, allowing the capabilities of CFEngine to be extended dynamically (promisers of type user, anyone?). We also want to build debugging mechanisms into the evaluator - starting with callback functions that allow us to hook into the code when classes are set or variable values are changed, we can then build a frontend for stepping through policy code, setting breakpoints and inspecting the current state of the evaluation process.
With infrastrucure being code and software defined systems replacing gradually replacing hard-wired IT systems, giving infrastructure engineers the same rich tools that software developers have been enjoying for decades seems like a logical step.
Enterprise
The two big areas of activity in February were hub diagnostics, and building an open architecture for knowledge management into the Mission Portal.
For better diagnostics of the Enterprise Hub, cf-hub now collects performance and connectivity data for the report collection and database maintenance processes. Together with the collection of this data from the MongoDB storage and through the APIs that provide access to it, users will be able to identify performance trends, make assumptions about scalability trends of the reporting hub. Next step is collecting relevant data from the cf-serverd on the policy hub as well, which then helps understand how the policy distribution scales, and discover whether there are hosts that do not manage to pull down the latest policy updates.
In the Mission Portal we have now integrated the plugin architecture, which allows for infrastructure analytics integrations to be created on top of the basic infrastructure of user management and data access. Such plugins can publish and subscribe to callback functions, which allows independent applications to mesh-up and enrich each other’s data with context. A plugin that knows about git could enrich policy compliance reports with historical information of the respective lines in the policy code, and an integration with a manually maintained inventory database could compare the information there with the data collected by CFEngine and highlight differences. Through this kind of contextualization, the raw data collected from the system is turned into actionable understanding. Documentation is not yet available, but we hope to be able to open at least some of this infrastructure up to you in a later release.
Get it while it’s hot!
Customers find the packages in a subdirectory “alpha_releases(unstable)” in their download area on cfengine.com. If you are not a customer, but want to evaluate this release, please sign up here to download a free version of CFEngine Enterprise. Once registered, you will have access to the latest stable release as well as to this monthly snapshot release. These free releases can be used to manage up the 25 nodes.
Community users can clone our github repository - check out tag 3.5.0a2 - and there are also packages available here. A big shout-out to all community contributers - your improvements to the code and to our policies and promise libraries are again much appreciated :)
Volker Hilsheimer - I’m a software engineer turned team lead and project manager. I believe that there are universal patterns that we can observe in all systems, be it software, hardware or human, and that the principles of a shared purpose, autonomy of the individual and the desire to achieve mastery give us the energy to make progress.
Twitter: @vhilsheimer