[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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~