Forum: CFEngine Help
Subject: Explanation for 3x iteration in a bundle
Author: frans
Link to topic: https://cfengine.com/forum/read.php?3,24402,24402#msg-24402
Hi-
I'm putting together a presentation about cfengine and noted that cf-agent will
loop up to three times within a bundle as it converges on the final state. I
then realized that I don't have a good feel for what that really means. The
reference manual simply says:
Within a bundle, the promise types are executed in a round-robin fashion
according to so-called `normal ordering' (essentially deletion first, followed
by creation). The actual sequence continues for up to three iterations of the
following, converging towards a final state
This doesn't seem to mean that cf3 will actually re-run through the bundle in a
linear fashion, carrying with it any class changes. Take this bundle as an
example:
bundle agent test {
vars:
"myslist" slist => { "red", "green", "blue" };
red::
"redvar" string => "redvar";
files:
"/tmp/foo/$(myslist)"
copy_from => local_cp("/root/$(myslist)"),
classes => if_repaired("$(myslist)");
reports:
red::
"$(redvar) is true.";
}
Verbose output shows that cf-agent does generate a "reports:" section for the
test bundle three times but the $(redvar) variable is never set.
The class is activated upon file copy:
cf3> -> Updated file from localhost:/root/red
cf3> ?> defining promise result class red
greping saved output from the same execution shows that the variable is never
set despite cf-agent allegedly passing back through "vars in bundle test" two
more times.
# grep redvar /tmp/cf
cf3> Skipping whole next promise (redvar), as context red is not relevant
cf3> Promise made by: $(redvar) is true.
cf3> Report: $(redvar) is true.
cf3> R: $(redvar) is true.
Could someone kindly elaborate on what this iterative execution really means?
Thanks in advance.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine