[Top][All Lists]

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

Re: Bootstrapping

From: Luke A. Kanies
Subject: Re: Bootstrapping
Date: Thu, 19 Feb 2004 11:13:00 -0600 (CST)

On Thu, 19 Feb 2004, John Sechrest wrote:

> "Luke A. Kanies" <address@hidden> writes:
>  % That's definitely a good idea where it can work, but it won't work for
>  % most of my cases.  One of the things I like the most about cfengine is how
>  % easy it is to use it to classify my hosts; I definitely don't want to move
>  % that classification outside of cfengine.
>  Can you outline for me how you use cfengine to classify hosts where
>  it is more appropriate to define it inside cfengine
>  instead of as an external declaration?
>  IE, some kind of derived class membership?

I converted my last client from using ISconf to using cfengine for host
classification.  Host classes where a heirarchy.  Here is a short example

  base = ( all )
  solaris = ( base )
  hpux = ( base )
  hpux_server = ( hpux )
  solaris_server = ( solaris )
  web_server = ( solaris_server )
  db_server = ( hpux_server )

  dns_server = ( solaris_server )

  # now we get to hostnames
  krypton = ( web_server dns_server )
  minnow = ( db_server )

At my last client, I had something like 40 unique host types, and the
heirarchy was probably about 5 levels deep.  This was an organization with
less than 100 hosts.  These host classes were used for all decision making
-- what packages to install, what processes to start, what filesystems to
create, what config files to load, etc.

Yes, I could build an equivalent logic system outside of cfengine, but why
would I?  I would then have to maintain a different interpreter; I know,
because that's what I was doing.  I have complete cross-pollination
between cfengine and ISconf -- cfengine got all of ISconf's types via a
module, and ISconf received all of cfengine's types on the CLI.

This was a real PITA.  It is much easier to have a single parent harness
with all of the classing information that then uses this information to
launch all of the necessary work.

To some extent, I could see sharing my definition of different types of
servers -- a web server installs apache and does blah, stuff like that.
But I'd like to see more about how you're doing this, because I consider
this to be a very difficult problem.

>  % We need to begin adding error checking and/or error counting into
>  % cfengine.  Without that, we're kind of stuck doing post-processing outside
>  % of cfengine, which is a lot of extra work.
>  Can you give an example of how you would like this to work?

See my earlier post about how I monitor syslog and put data into LDAP.

Westheimer's Discovery:
        A couple of months in the laboratory can frequently save a
        couple of hours in the library.

reply via email to

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