help-cfengine
[Top][All Lists]
Advanced

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

Re: editfiles missing the profound function?


From: Mark Burgess
Subject: Re: editfiles missing the profound function?
Date: Wed, 23 Feb 2005 08:35:44 +0100

I just did this on a system.

  { /etc/postfix/main.cf

  # Edit the lines if they are there (required patch 2.1.14 )

  ReplaceAll "^mydomain =.*" With "mydomain = iu.hio.no"
  ReplaceAll "^relayhost =.*" With "relayhost = [nexus.iu.hio.no]"

  # Check the lines are there at all

  AppendIfNoSuchLine "relayhost = [nexus.iu.hio.no]"
  AppendIfNoSuchLine "mydomain = iu.hio.no"
  }

I had to add a little finesse/patch to the detection of non-convergent
operation to make this work. If you get the latest snapshot version, it
should worlk for you..

Mark

On Wed, 2005-02-23 at 02:14 -0500, Yaroslav Halchenko wrote:
> Dear cfengine-admirers
> 
> Am I missing the point or cfengine[2] is missing I would say
> most-often-used function which can be named like
> 
> AssignValue 'X FS' Z
> 
> which I would use whenever I want change/add_a_line_with a right
> hand side of any assignment like
> 
> X FS Y
> to 
> X FS Z
> 
> where X is a name
> FS is field separator (usually is ' *= *' or just ' *')
> and Y and Z are values
> 
> The absense of such function and the fact that ReplaceAll doesn't quite
> fit  due to possible recursion, led people to device monsters like
> 
> http://www.shipyard.com.au/shipyard/articles/sysadmin/cfengine-configfiles.py
> 
> where for a simple obioius rule like
> 
> AssignValue '^LogLevel *' 'INFO'
> 
> is presented as
> 
>       BeginGroupIfNoLineMatching '^LogLevel.*'
>         Append 'LogLevel'
>       EndGroup
>       ResetSearch 1
>       LocateLineMatching '^LogLevel.*'
>       BeginGroupIfNoMatch '^LogLevel INFO$'
>         ReplaceLineWith 'LogLevel INFO'
>       EndGroup
> 
> which shows you how much duplication is necessary to handle such
> situation in a right way.
> 
> Is there a way to fix the situation or describe me where I'm wrong?
> 
> Thank you all in advance
> 
> 





reply via email to

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