help-cfengine
[Top][All Lists]
Advanced

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

Re: Maintaing similar but not identical versions of files


From: Mark . Burgess
Subject: Re: Maintaing similar but not identical versions of files
Date: Wed, 1 Sep 2004 04:17:57 +0200 (MEST)

You want binary or checksum comparison for copy rather than by date.

To customize the file, I would add hooks that can easily be searched and
replaced for, with class-specific rules. (A bit like an M4 macro)
e.g.

 use "XXX1" and "XXX2" in your file, then

linux::

 ReplaceAll "XXX1" With "Jumbo rocket beans"

solaris::

 ReplaceAll "XXX1" With "African weezle root"

Mark

On 31 Aug, Mark wrote:
> I just found that cfagent does NOT copy the base file over again, even
> though the local version of the file is different.
> I thought initally that it copies the file over again as soon as it
> differs... What does it use to determine when to copy a file over again and
> when not? Timestamps?
> 
> Thanks,
> 
> MARK
> 
> 
>> -----Original Message-----
>> From: help-cfengine-bounces+msalists=gmx.net@gnu.org 
>> [mailto:help-cfengine-bounces+msalists=gmx.net@gnu.org] On 
>> Behalf Of Mark
>> Sent: Tuesday, August 31, 2004 5:20 PM
>> To: help-cfengine@gnu.org
>> Subject: Maintaing similar but not identical versions of files
>> 
>> 
>> Hi,
>> 
>> I have a file that I want to copy to a bunch of servers. The 
>> file is the
>> config file for the MySQL database (/etc/my.cnf).
>> I want to make sure that it is on each server and that the 
>> basic content is
>> always the same, but some of the lines need to differ for 
>> each server the
>> file is on.
>> Here is the content (abbreviated):
>> 
>> /etc/my.cnf on server "data1":
>> ----------------------------------
>> ## Common part start ##
>> [mysqld]
>> datadir=/var/lib/mysql
>> socket=/var/lib/mysql/mysql.sock
>> log=/var/log/mysql/mysqld.log
>> log-error=/var/log/mysql/mysqld.err
>> ## Common part end ##
>> ## Specific part start ##
>> master-host=data1
>> replicate-do-db=1to2
>> ## Specific part end ##
>> ------------------------------------
>> 
>> /etc/my.cnf on server "data2":
>> -----------------------------------
>> ## Common part start ##
>> [mysqld]
>> datadir=/var/lib/mysql
>> socket=/var/lib/mysql/mysql.sock
>> log=/var/log/mysql/mysqld.log
>> log-error=/var/log/mysql/mysqld.err
>> ## Common part end ##
>> ## Specific part start ##
>> master-host=data2
>> replicate-do-db=2to1
>> ## Specific part end ##
>> -------------------------------------
>> 
>> So what I figured I could do is the following:
>> Copy the part of the file that is equal for all servers over using the
>> "copy" action:
>> 
>> [mysqld]
>> datadir=/var/lib/mysql
>> socket=/var/lib/mysql/mysql.sock
>> log=/var/log/mysql/mysqld.log
>> log-error=/var/log/mysql/mysqld.err
>> ## Specific part start ##
>> ## Specific part end ##
>> 
>> Then use an "editfiles" action to remove everything between 
>> the "## Specific
>> part start ##" and "## Specific part end ##" and use 
>> InsertLine to add the
>> specific content for each server.
>> 
>> This will give me what I need.
>> However, there are 2 things I do not like about it:
>> 1. Since the basic file, which I copy over from the policy server, is
>> different than the modified final file, it gets copied over 
>> in each run,
>> even though it does not need to be copied, unless the common 
>> part changes.
>> 
>> 2. Since it takes some time (maybe only a few seconds if I'm 
>> lucky, but
>> still) from the step that copies over the base file to the 
>> step that does
>> the edit to get the final version of the config file, there is a short
>> period in which the config file is incomplete and thus 
>> unusable. If MySQL
>> gets restarted just during this period, I will be missing part of the
>> configuration, meaning I will most likely be in trouble... 
>> 
>> This is only one example for this general problem of files 
>> that I need on
>> several servers that are almost but not exactly identical on 
>> the different
>> machines. Is there a better way than the one I describe above?
>> The only other thing I could think of is having one version 
>> of the config
>> file per machine on the policy server, but this means 
>> redundancy and is not
>> really scalable - so it is exactly the opposite of the cfengine
>> philosophy... Except if I have a template mechanism that generates the
>> various versions on the central host...
>> 
>> Thanks,
>> 
>> MARK
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Help-cfengine mailing list
>> Help-cfengine@gnu.org
>> http://lists.gnu.org/mailman/listinfo/help-cfengine
>> 
> 
> 
> 
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@gnu.org
> http://lists.gnu.org/mailman/listinfo/help-cfengine



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Work: +47 22453272            Email:  Mark.Burgess@iu.hio.no
Fax : +47 22453205            WWW  :  http://www.iu.hio.no/~mark
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~





reply via email to

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