[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
problems
that I want to raise.
1. When I ran cfengine on one of the main servers it bailed out with an
error
saying "Couldn't get interfaces". I tracked this down to the fact that
the
machine involved has a Frame Relay interface, which has over 90
point-to-point
interfaces defined. The cfengine code has a fixed size array that could
only
cope with 64 interfaces. A simple array bounds change to 256 positions
fixed
my problem. A better solution may be to discover how many interfaces
there
are, and to allocate a buffer large enough.
2. Enhancement request. One of the uses I am making of cfengine is
software
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
restarted.
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
directory.
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.
Regards,
Frank Ranner
- Bugs and features,
Frank Ranner <=