help-cfengine
[Top][All Lists]
Advanced

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

Re: Need 'UncommentAndSetValue' or some such


From: Brendan Strejcek
Subject: Re: Need 'UncommentAndSetValue' or some such
Date: Tue, 25 Oct 2005 10:46:57 -0500
User-agent: Mutt/1.5.6+20040818i

This is a commonly requested feature, check the archives for the
discussions.

This is what I find myself doing these days:

    editfiles:
        { /some/file
            DeleteLinesStarting "SomeVar" # Or Matching, whatever
            AppendIfNoSuchLine "SomeVar = SomeValue"
        }

This is perfectly convergent because cfagent edits the file in a buffer
and then compares to contents on disk. If there is no difference, the
actual file is not touched.

Best,
Brendan

--
Senior System Administrator
The University of Chicago
Department of Computer Science
http://www.cs.uchicago.edu/people/brendan


David Scott Coburn wrote:

> 
> In many of my cfagent script I have constructs like this:
> 
> editfiles:
> 
>         { /etc/postfix/main.cf
>             BeginGroupIfNoSuchLine "mydestination = $(host), $(fqhost), 
> localhost"
>                 DeleteLinesMatching "^mydestination.*"
>                 Append "mydestination = $(host), $(fqhost), localhost"
>             EndGroup
>             BeginGroupIfNoSuchLine "mydomain = $(domain)"
>                 DeleteLinesMatching "^mydomain.*"
>                 Append "mydomain = $(domain)"
>             EndGroup
>             DefineClasses "restart_postfix"
>         }
> 
> The bit that bugs me the most about this construct is the repetition
> of the text I am searching for and the text to replace it with.
> 
> What would be nifty would be something like this:
> 
> editfiles:
> 
>         { /etc/postfix/main.cf
>             UncommentAndSetValue "mydestination ="  "$(host), $(fqhost), 
> localhost"
>             UncommentAndSetValue "mydomain =" "$(domain)"
>             DefineClasses "restart_postfix"
>         }
> 
> The first argument would be the variable that get its value changed,
> and the second argument would be what it gets set to.
> 
> If the value was already set then nothing would happen.  If a variable was
> changed then the DefineClass would happen.  If the variable was commented out
> then it would be uncommented and set to the given value.
> 
> It seems like this kind of setting of variables in config files to some
> value is half of what I use cfengine for and this would be a whole lot
> easier to set up and then maintain.
> 
> Perhaps there is already a better way to do it that I have not found in
> the manual yet?
> 
> Thanks,
> 
> Scott
> 
> -- 
> * David Scott Coburn
> * Brookhaven National Laboratory
> * scott@bnl.gov 631.344.7110
> * "Assume a spherical cow of uniform density..."
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@gnu.org
> http://lists.gnu.org/mailman/listinfo/help-cfengine
> 




reply via email to

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