help-cfengine
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Need 'UncommentAndSetValue' or some such


From: Luke Kanies
Subject: RE: Need 'UncommentAndSetValue' or some such
Date: Fri, 28 Oct 2005 00:10:47 -0500 (CDT)

On Thu, 27 Oct 2005, David Masterson wrote:

> Now if it could only be abstracted...
>
> I think CFEngine implements two things -- policies and protocols.  Policies
> are the answers to "what type of system is this?"  Protocols are the answers
> to "how do I implement a policy?"  My question is has anyone given thought to
> producing generic protocols for CFEngine that could be used everywhere
> (within the assumptions of the protocol)?

Well, I can certainly testify that much thought has been given to such
things, but I have never been in a room in which it was being discussed
where there was any clear agreement on those two terms.

One of my main priorities in Puppet was to draw a very clean line between
the language, which is all about expression, and the library, which is all
about action.  There's basically a three step conversion from the text-based
configuration to objects (because I'm writing in Ruby, it's all objects)
that can manage the system:

1 - parse the text
2 - a client connects; interpret the appropriate parse trees and generate a
portable configuration (an extremely simple object type, could easily be XML)
3 - the client takes this portable configuration and turns it into objects
in the library

So on the one hand it wouldn't be that difficult to, say, use the Puppet
language and parser to generate a cfengine configuration, as long as you
wrote a simple translator from my portable objects to cfengine (which would
be nigh on impossible for editfiles, and difficult for control and groups,
but easy for any of the object-like types).

But I think you're probably talking about a language-level separation, not a
language/library separation.  I've written some decent constructs within
Puppet to make that easier, so I'd be interested in hearing whether they
meet your needs.

That being said, that obviously doesn't really answer your question, since
I'm sure you're looking for cfengine to acquire these things, not for some
other tool that might have them.  I can't really help with that, although
I've tried before.

-- 
I conclude that there are two ways of constructing a software design: One way
is to make it so simple that there are 'obviously' no deficiencies and the
other way is to make it so complicated that there are no 'obvious'
deficiencies.
    --  C.A.R. Hoare, Turing Lecture "The Emperor's Old Clothes" CACM
        February 1981, pp. 75-83.
---------------------------------------------------------------------
Luke Kanies | http://reductivelabs.com | http://madstop.com





reply via email to

[Prev in Thread] Current Thread [Next in Thread]