[Top][All Lists]

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

Bugs and features

From: Frank Ranner
Subject: Bugs and features
Date: Sat, 22 Sep 2001 20:53:36 +1000

I have been deploying cfengine on a solaris site and have a couple of
that I want to raise.

1.      When I ran cfengine on one of the main servers it bailed out with an
        saying "Couldn't get interfaces". I tracked this down to the fact that
        machine involved has a Frame Relay interface, which has over 90
        interfaces defined. The cfengine code has a fixed size array that could
        cope with 64 interfaces. A simple array bounds change to 256 positions
        my problem. A better solution may be to discover how many interfaces
        are, and to allocate a buffer large enough.

2.      Enhancement request. One of the uses I am making of cfengine is
        distribution, via the copy action. One of the packages I am
distributing relies 
        on a local process, so I need to be careful updating this software.
What I want 
        to do is check on the change of a single file (containing the version
number) and
        if changed, kick off an action sequence.

        What I do now is to define a class if the version file is copied. The
action sequence 
        then deletes that file, stops the daemon (/etc/init.d/processd stop),
and bulk copies the 
        new package with purge. One of the files copied is a rename of the
version file. Once the 
        bulk copy is complete, the version file is copied to its correct name,
and the daemon is 

        So, what is the enhancement? I would like a cross between the copy
action and the copy/warn 
        action. Essentially a compare between source and destination, with the
ability to define a 
        class if the compare fails. The compare would be any of the current
modes, ie binary, checksum 
        or date/age.

3.      Enhancement request. When recursing home directories during editfiles
action, it would be useful 
        if the current user information of the home directory be available in
variables. I had a need to 
        edit a file in each users directory, and needed to patch a line to
contain the path to the home 

        As a workaround I put a cfengine invocation into a wrapper script for
the application, which copies 
        the ini files initially from the /opt/application/inidist directory,
then patches in $HOME.

        However it would be handy if, say, $(home_uid) $(home_gid)
$(home_homedir) $(home_shell), etc. 
        were available as each home directory is processed. 

        This could also be used in the files action: 
        files: home recurse=inf user=$(home_uid)

4.      Big change! How about using the rsync algorithm for remote copies. I
believe an rsync library is 
        available. Either that, or simply use rsyncd as the server instead of
cfd. Relegate cfd to be the 
        remote invocation agent for cfrun only.

Frank Ranner

reply via email to

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