We’re happy to announce maintenance releases for all supported CFEngine release branches today! Being maintenance (aka patch) releases, the goal is to increase stability and reliability for CFEngine users and enable a safe upgrade-path. As such, the releases primarily include bugfixes and low-risk changes that do not impact the compatibility between previous patch releases. Looking at the CFEngine release schedule, we can see that
- 3.7 LTS is maintained until July 17th 2018
- 3.6 is maintained until July 17th 2016 (released before CFEngine incorporated the LTS model)
- 3.8 (being a non-LTS release) is maintained until 3.9.0 is released
For CFEngine Enterprise customers, the supported releases as of today are 3.7 and 3.6. If you are on 3.6, it is a good time to prepare for an upgrade to 3.7, as the next supported minor release will be 3.10 LTS due end of 2016. If you are planning to contribute improvements to 3.9 (thank you!), please note that we would need the pull requests by beginning of April in order to have time to incorporate them into 3.9.
Changes and improvements
The def.json feature for overriding CFEngine default configuration was introduced in 3.7 and has since seen significant adoption. The original goal of this feature is to make upgrades easier, as it makes the difference between vanilla masterfiles and user masterfiles much easier to manage by separating CFEngine settings like mail configuration out of masterfiles. However, it is also being used to load custom data into CFEngine, like the contents of a CMDB. A feature to parse def.json natively in CFEngine (in C code) to support early data loading was introduced in 3.8.1. This improvement is included in 3.7.3. Furthermore, several reported stability and usability improvements of def.json have been introduced in 3.7.3 and 3.8.2 (3.6 does not have this feature). The evaluator component of CFEngine, responsible for defining classes, variables and deciding on which parts of the policy should be executed, has received several important stability enhancements in all branches (3.7, 3.6 and 3.8). Please note that these improvements also lead to some functions (most notably classesmatching()) returning classes and variables in different order than in past releases. Such functions do not define the order of which the data is returned, so it may change in any release. If you depend on ordering, please use data manipulation functions like sort(). The new packages promise in 3.7 and later versions have received several usability enhancements in 3.7.3 and 3.8.2. Most notably, the verbosity of the promise type during normal operation has been lowered, so that users no longer get “spammed” when there is no error in execution. 3.6.7 includes backports of relevant issue-fixes that have been incorporated into 3.7 and 3.8 since the release of 3.6.6 in July 2015. For more details, please refer to the 3.6 ChangeLog for Core and Enterprise. The bundled dependencies of all three CFEngine releases have been upgraded to bring in the latest security, performance and reliability improvements. For more details on the exact dependencies that are bundled with CFEngine, please refer to the Core ChangeLog for 3.7, 3.6 and 3.8 (search for dependencies). These ChangeLogs also include details of other improvements that have been made.
Upgrading?
If you’re upgrading an existing CFEngine Enterprise installation, check out the upgrade documentation for 3.7 or 3.6 for guidelines to make the process as smooth as possible. We are happy to assist CFEngine Enterprise customers with upgrading! Please contact CFEngine customer support to receive a fixed-price quote for upgrading your CFEngine infrastructure.
Get it!
CFEngine Enterprise packages can be downloaded here or you can give 3.7.3 a quick spin with the CFEngine Enterprise Vagrant environment. Community Edition is released as source code, packages and Linux package repositories – to make installation as easy as possible! We hope you enjoy the new releases, and we look forward to hearing about your experience in the CFEngine Google Group!