Mahesh Kumar, VP Marketing CFEngine
@mahesh_CFE
mahesh.kumar@cfengine.com
Hello Everyone! It is not too often that one gets to join a company with solid fundamentals when it comes to technology and one that finds itself as the change leader in an area that is evolving real-time (DevOps and Continuous Delivery). Well, I am thrilled to report that I am onboard here at CFEngine as their VP of Marketing.
In the days ahead I will be reporting back frequently on the cool things we are doing here at CFEngine. Such as recently winning an award from JPMC that you can read more about in our blog. Of course we could speak about the ground breaking and innovative areas we are focused on here at CFEngine such as continuous delivery and continuous operations. However I am getting ahead of myself. I wanted to use this post to introduce myself as well as talk about the recent Velocity and DevOps Days events in NYC.
A while ago, work was started on a new promise type in CFEngine, the “users” promise type. What it does is make promises about which users are supposed to be present on each host, what login credentials they have, what groups they are part of, and so on. This has traditionally been something one would have to write in the CFEngine policy using system commands, but with this new feature it becomes a much more convenient and robust solution for users management.
Some software is more opinionated than others. If it ever made sense to anthropomorphize software, the CFEngine agent would be a good candidate. A CFEngine installation is a society of independent agents, each with their own goals, schedules and limited view of the world, individually doing their best under current weather.
Mark Burgess’ new book ‘In Search of Certainty’ may be viewed as a popular anthology for the design considerations that went into writing CFEngine. To that end, we are taken on a fast paced journey through topics such as classical and quantum mechanics, information theory, game theory and biology. It is clear that Mark had a lot of fun writing this book, drawing on and connecting dots of an eclectic array of examples from everyday life. Along the way, questions about how to design good tools are explored from a physicist point of view.
Authored by Remi Bergsma - http://blog.remibergsma.com
Back in June, just before I went off for holiday, I attended a CFEngine training in Amsterdam. When I returned from holiday a few weeks later, me and my team started making plans to implement CFEngine in our environment. After two months of hard work, I’m proud to say we manage about 350 out of our 400 Linux servers with CFEngine!
The ride has been fun, although not always easy. In this post I’ll give a quick overview of our CFEngine implementation, where I found useful info, etc.
CFEngine 3.5.2 is now available for download. This is a maintenance release of CFEngine 3.5, and introduces a number of fixes and improvements to both Community and Enterprise editions. New functionality has been included to the SQL builder and the Design Center integration in Mission Portal.
Changes in CFEngine Enterprise:
MongoDB has been upgraded to version 2.2.4 monitoring data has moved into a separate database - see db-move-monitoring-to-cfmonitor.js script to migrate data Improvements to the Mission Portal:
CFEngine 3.5.1 is now available for download. This is the first maintenance release of CFEngine 3.5, and introduces a number of fixes and improvements to both Community and Enterprise editions. New functionality has been included to the SQL builder and the Design Center integration in Mission Portal.
Community repositories will be updated shortly.
Core Changes:
the CFEngine Standard Library in masterfiles/libraries is now split into promise-type specific policy files, and lives in a version-specific directory. This should have no impact on current code, but allows more granular include of needed stdlib elements (Redmine #3044) file changes are logged with log level Notice, not Error Bug fixes:
After work and discussion, the CFEngine developer team produced https://github.com/cfengine/core/pull/784 to make libraries/cfengine_stdlib.cf compatible with 3.4.x and older again, to modularize it, and to improve the upgrade experience. These changes will be in the upcoming CFEngine 3.5.1 release:
libraries/cfengine_stdlib.cf is now 3.4-compatible again, so upgrading will not break existing CFEngine installations. lib/3.5 and lib/3.6 contain the standard library with changes that require 3.5.x and 3.6.x, respectively lib/3.5 and lib/3.6 have multiple files instead of a single cfengine_stdlib.cf. This is the same content as the cfengine_stdlib.cf content, but split by promise type (e.g. lib/3.5/files.cf has file-related bodies and bundles). common.cf has promise bodies common to all promises, e.g. action and classes paths.cf has a utility common bundle called paths that lets you say, for instance, “$(paths.path[rpm])” instead of hard-coding the location of the RPM manager executable. 3.5.1 and newer will have new variables to store the CFEngine major, minor, and patch version separately. It all works just like before 3.5.0, except you don’t have to include a huge library. If you just want to set classes for a promise, include common.cf. If you just want process filters, include processes.cf.
CFEngine 3.5.0 Community Edition is now available for download!
At the same time we have updated the CFEngine documentation, which now lives in a new design and information architecture at http://docs.cfengine.com.
This latest release of CFEngine Community comes with a ton of improvements and new language features for policy writers. Many of these changes have been motivated by the great feedback and reports from our users, and a lot of changes were contributed by members of the growing CFEngine community. A big “Thank You!” to you all! Our package repositories will be updated shortly, and we will continue from here with monthly maintenance releases of CFEngine 3.5.x.
The Release Candidate of CFEngine 3.5.0 Community Edition is now available for download at:
https://cfengine.com/inside/myspace
We’re looking forward to your feedback to the changes and improvements!
Significantly improved parsing and evaluation of policies A large number of parser and evaluation problems have been fixed. Iterating over arrays with nested lists has caused many headaches and workarounds in previous versions of CFEngine. With 3.5, many of those can disappear.
Policy developers get clear and consistent messages from the stricter parser. Note: If your policy has syntactically incorrect code, then the new parser will mark those as errors. Fixing those errors should be straight forward, but we’re interested in hearing about your experience with this so that we can make this as smooth as possible and document the typical issues for the final release!
Recently support for Windows PowerShell was merged into the Enterprise Windows version of CFEngine. PowerShell is Microsoft’s enhanced shell, intended for more advanced system administration and programming tasks.
The change to CFEngine means you can seamlessly use PowerShell in your configuration policies, just like the normal “cmd” shell. It’s very easy, for example, say you have the following bundle:
bundle agent mybundle { vars: "mymessage" string => execresult("echo This is a message from cmd", "useshell"); reports: "$(mymessage)"; } This uses the regular “cmd” shell. To switch to PowerShell, just replace it with the following: