The granular per-host configuration solutions are always
difficult with cfengine. I don't know that this should be a part of
cfengine, as doing host configs does not scale any easier than system
administration without cfengine at all.
I've been trying to up a system where groupfile data is stored
in a database and pulled via cfengine at the time of execution in
order to centralize group membership data and facilitate reporting,
which really doesn't exist right now. If I have time to finish it, it
might be useful in solving some of the problems of keeping up with
individual host configurations.
On 3/8/06, *Marco van Beek* < mvanbeek@supporting-role.co.uk
<mailto:mvanbeek@supporting-role.co.uk>> wrote:
Hi Everyone,
I have a suggestion for CFengine. It would be nice to be able to
have a
plain text config file with variables, which could be read by a
client
on a host by host, and/or class by class basis.
The data would be read in by CFEngine (probably set in
cfagent.conf) and
would be available to all subsequent cf files being processed.
I did something a while ago because I wanted to read the same
data in
Perl as PHP for a project I have been dabbling with.
Anyway, an example config plus working Perl code is below. It
would save
me having to use complicated bash code to extract data from a plain
text
file. I have a config file per host which means I can define each
boxes
purpose outside of CFEngine, which makes it easier to maintain.
Cheers,
Marco
==============================================================
EXAMPLE CONFIG FILE
==============================================================
#######################################
# Cross language config file for SSiS #
#######################################
# Comments are allowed #
# White space is allowed #
# syntax is 'key = value' #
###########################
...
#########
# MySQL #
#########
mysql_server = localhost
mysql_datasource = dbi:mysql:ssis
mysql_database = ssis
mysql_username = ssis
mysql_password = ssis
mysql_palm_gluetable = PDA_Sync
mysql_ldap_gluetable = LDAP_Sync
########
# LDAP #
########
ou = ou=SSiS
dc = dc=supporting-role,dc=co,dc=uk
ldap_bindas = uid=ssis,ou=People,dc=supporting-role,dc=co,dc=uk
ldap_password = secret
ldap_server = localhost
ldap_port = 389
ldap_version = 3
===============================================================
PERL CODE TO EXTRACT FROM CONFIG AND DUMP INTO ARRAY
================================================================
my %settings;
open(CONFIG,"/etc/ssis-config");
while(<CONFIG>)
{
chomp; # no newline
s/#.*//; # no comments
s/^\s+//; # no leading whitespace
s/\s+$//; # no trailing whitespace
next unless length; # Anything left?
my ($var, $value) = split(/\s*=\s*/,$_, 2);
$settings{$var} = $value;
}
close CONFIG;
my $mysql_datasource = $settings{"mysql_datasource"};
my $mysql_username = $settings{"mysql_username"};
my $mysql_password = $settings{"mysql_password"};
my $mysql_palm_gluetable = $settings{"mysql_palm_gluetable"};
my $public_user = $settings{"public_user"};
my $Memo_user = $settings{"Memo_user"};
my $ToDo_user = $settings{"ToDo_user"};
my $Address_user = $settings{"Address_user"};
my $Datebook_user = $settings{"Datebook_user"};
==================================================================
_______________________________________________
Help-cfengine mailing list
Help-cfengine@gnu.org <mailto:Help-cfengine@gnu.org>
http://lists.gnu.org/mailman/listinfo/help-cfengine
--
-Scott