I have the following promises.cf to handle multiple clusters. It used to work
with cfengine community versions before 3.1.4:
This is a simplified example:
{{{
body common control
{
#version => "$Revision: 4450 $ $Author: bas $";
version => "1.3.0";
ignore_missing_bundles => "true";
any::
bundlesequence => {
@(g.sara_bundles)
};
inputs => {
@(g.common_inputs),
"$(g.cluster_name)/change_management.cf",
"$(g.cluster_name)/quarterly.cf",
"$(g.cluster_name)/hourly.cf",
"$(g.cluster_name)/daily.cf",
};
}
bundle common g
{
vars:
any::
"common_inputs" slist => {
"update.cf"
}
"node_status" string => "/etc/node_status";
LISA_CLUSTER::
"cluster_name" string => "lisa",
policy => "overridable";
classes:
"LISA_CLUSTER" expression => regline(".*lisa.*",
"$(node_status)/cluster");
"INTERNE_SERVERS" expression => regline(".*interne-servers.*",
"$(node_status)/cluster");
}
}}}
If run this on a node in the lisa cluster everything works as expected, output:
{{{
community> > Parsing file /var/lib/cfengine3/inputs/promises.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> ?> defining additional global class LISA_CLUSTER
community> ?> defining additional global class Production
community> ?> defining additional global class debian_squeeze
community> ?> defining additional global class all
.....
Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/lisa/quarterly.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/lisa/hourly.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/lisa/daily.cf
}}}
But when i change the regline order to:
{{{
classes:
"INTERNE_SERVERS" expression => regline(".*interne-servers.*",
"$(node_status)/cluster");
"LISA_CLUSTER" expression => regline(".*lisa.*",
"$(node_status)/cluster");
}}}
The class LISA_CLUSTER is set too late:
{{{
....
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/undefined/global.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file
/var/lib/cfengine3/inputs/undefined/change_management.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/undefined/quarterly.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/undefined/hourly.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> -> Checking common class promises...
community> SET ignore_missing_bundles true
community> > Parsing file /var/lib/cfengine3/inputs/undefined/daily.cf
community> Initiate variable convergence...
community> -> Checking common class promises...
community> ?> defining additional global class LISA_CLUSTER
}}}
Is this a locking problem in regline? Or is there another problem.
regards,
--
Bas van der Vlies
[email protected]
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine