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