Vim Plugins
Neil Watson has generously made some Vim plugins available for CFEngine 3. Abbreviations and other help for CFEngine 3 files CFEngine 3 syntax highlighting
Neil Watson has generously made some Vim plugins available for CFEngine 3. Abbreviations and other help for CFEngine 3 files CFEngine 3 syntax highlighting
Aleksey Tsalolikhin has written a helpful blog post introducing CFEngine 3. Read the full article.
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:
CFEngine began in the early part of 1993. It was the first Open Source configuration management tool and quickly became an internationally used tool. Since then, CFEngine has been reinvented several times through our commitment to basic research, and today CFEngine is installed on over a million computers all over the world. We have put a lot of work into CFEngine over the past two years to truly solve the challenges faced by system administrators throughout the industry. The arrival of alternative configuration management systems has drawn some attention from CFEngine, but the feedback we get from our users is: `We don’t talk a lot about CFEngine because it just works. We couldn’t run our business without it…’ So we want to shift the attention back at our loyal CFEngine users.
A popular theme in science fiction writing today involves microscopic machines that build and repair other machines, clothing and even people. Today scientists are researching this very thing. Our future may be bright indeed. For system administration nano technology is already here. Software agents now exist that will search computer systems and repair defects or build missing components. CFEngine is such an agent. It is able to examine the overall system at a low level including files, processes and network packets and make builds or repairs based on what it finds. The result is a more self reliant system.
Over the last few months the CFEngine AS development team has added better integration for CFEngine Nova with windows (without need of Cygwin). The most recent development is support for Windows event logs. Event logs are the Windows counterpart to syslog from Unix. The main difference is that event logs aim to group similar log messages, giving each group an event id. A program that creates logs, such as CFEngine Nova, must define the possible event ids, and their meaning. In many applications, only one event id is defined, a generic log message. However, CFEngine Nova defines the following range of event ids, which allows for automatic handling of log messages.
How big are existing CFEngine installations? Until recently, this question was mostly of interest to people researching approaches to automation and scaling. It is also challenging to obtain good data from users as many users under-quote the number of machines they manage. Often this is to avoid attracting attention to themselves. Nevertheless, since forming the cfengine company, we have been collecting data from CFEngine users, weeding out obvious nonsense, such as users who report 9999 systems, or 123456. The results reveal a picture that makes a lot of intuitive sense, so we can be confident that it is correct. Simplified into orders of magnitude, we have:
In spite of being publicly sceptical of cloud computing as a technological concept CFEngine author Mark Burgess announced that CFEngine will support machine and service virtualization within its framework of convergent promises, in order to facilitate the kind of adaptive utility computing that is a growing presence in datacenters. “Elastic adaptation is the one aspect of what is being called Cloud Computing that I see as a real technological challenge,” he added. “I have done some research on this with Alva Couch of Tufts University, while he visited Oslo on sabbatical last year, and we have some interesting twists to bring to the table – without letting the cat out of the bag yet.” Initially, CFEngine will interface with popular virtual machine APIs, such as VMware, KVM and others in order to provide basic VM management in a simple way.
Following a sustained effort by the programming team at CFEngine AS, CFEngine Nova (the commercial version of CFEngine 3) will run natively on Windows NT platforms (not merely emulated under the Cygwin framework), with first release just into the new year 2010. Support has been added for registry management and Windows Access Control Lists, as well as integration with Event Manager and other goodies. The plans over the next year include further integration of CFEngine with Active Directory and its group policies. CFEngine still has something to offer Windows users, even with the new tools that Microsoft is bringing to Windows 2008. One thing is integration of Windows resources into the CFEngine Knowledge Map, but also there is the ability to manage security through ACLs, and implement group policies convergently over time (not just one-off), as well as to integrate with a major Unix management system in a universal framework. Early rumours of the release have already led to a flurry of interest for the upcoming software release from a number of companies internationally.
New features have been added to the CFEngine development tree, both Community Edition and CFEngine Nova, for list manipulation. The grep() function takes a list and extracts elements that match a given regular expression, returning a sublist. The join() function, which complements splitstring() function, takes a list and returns a scalar string with elements separated by a delimiter. These functions provide Perl-like operations that reduce the dependence on external scripting. List manipulation is a key enhancement in CFEngine 3, and forms a core paradigm for reducing configuration complexity.