On Mon, Aug 22, 2011 at 02:41:30PM -0400, Sjoerd Oostdijck wrote:
>On 8/22/11 10:36 AM, [email protected] wrote:
>> From the top-level, what I want is for "update.cf", when checking
>> "/var/cfengine/inputs", to try one server, and if that times out, then to
>> try another in the list.
>>
>> Now the "copy_from" compound body has a "servers" which takes a list, and
>> the manual defines that as "the servers are tried in order until one of them
>> succeeds". That sounds good. Very good. In theory.
>>
>>
>I don't know about the examples, but having your copy body use two
>servers works just fine in my experience. Just do something like this:
>
>vars:
> "servers"
> comment => "Location unknown, just set both policy hosts",
> slist => { "host1.foo.net","host2.foo.net" };
>
>files:
> "/var/cfengine/inputs"
> copy_from =>
>umycopy("${policyrepo}","@(servers)"),
> other stuff;
>
>body copy_from umycopy(from,phosts) {
> source => "${from}";
> servers => { @(phosts) };
> compare => "digest";
> verify => "true";
> purge => "true";
> trustkey => "true";
>}
You should be able to simplify the body slightly if you export the
variables in a common bundle. I've found that 99% of the time, we copy
the files *only* from a single policy host, so writing the source host
for each promise is a waste. Thus, I just build it into a custom,
but commonly used, copy_from body.
One difference is that we use a single hostname, but it floats between
two HA hosts (specifically which ever one is the currently active of the
two).
# Define the global variable.
bundle common g {
vars:
'policy_server' string => 'cfengine.domain.com';
}
# Define the new copy_from update() body
body copy_from update(path) {
any::
servers => { "$(g.policy_server)" };
source => "$(path)";
encrypt => "false";
compare => "digest";
verify => "false";
copy_backup => "timestamp";
preserve => 'yes';
}
# Example usage
files:
any::
"/etc/ntp.conf"
copy_from => update("/etc/ntp.conf.node.linux"),
perms => prf,
classes => trigger("BounceNTPd");
--
Jesse Becker
NHGRI Linux support (Digicon Contractor)
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine