Forum: CFEngine Help
Subject: Re: Explanation for 3x iteration in a bundle
Author: sauer
Link to topic: https://cfengine.com/forum/read.php?3,24402,24412#msg-24412

So, cf-agent runs through the whole bundle three times, in the same order.  In 
your last example, you have vars, commands, and reports.  On the first 
iteration, red isn't defined in vars, so the var isn't defined.  Your module 
command runs and defines the red class.  Then reports are evaluated, and since 
red is defined at that time, the report is generated based on a variable which 
is not set.  Upon the second iteration, red is defined, so the variable gets 
set, and the other promises have already been evaluated.

If you depend on the variable being set, one workaround would be to define a 
class based on the existence of the variable.  For example:


bundle agent test {
vars:
  red::
  "redvar" string => "redvar";

classes:
  red::
  "hasred" expression => isvariable("redvar");

commands:
  "/root/setredclass.sh"
    module => "true";

reports:
  hasred::
  "$(redvar) is the value of redvar.";
}


This kind of somewhat complicated issue is precisely why one of the solutions 
guide or reference manual indicates that complex variable / class dependencies 
are a bad idea. :)

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to