Forum: CFEngine Help
Subject: Re: cf3 inputs, branching, selectiveness, staying sane
Author: simonblake
Link to topic: https://cfengine.com/forum/read.php?3,23400,23402#msg-23402
Hi Geoff
It bothered me that the default approach seemed to be load all inputs on all
clients and then pick the relevant promises out at runtime - it seemed like a
waste of cpu time parsing all the .cf files every run, and makes for much
longer logs full of "promise foo not relevant".
I wanted to have some promises common to all hosts, then some variable
promises/inputs based on the role of the host, and then a few tidyup promises
at the end. To make each client only run the relevant inputs and promises, I
do something like below. The only caveat is that this has to be in promises.cf
- setting inputs in other .cf files doesn't work (not unreasonably).
body common control {
bundlesequence => {
....
# Site specific stuff
@(g.allbase), @(g.rolebase), @(g.tidyupbase)
};
inputs => {
"update.cf",
"cfengine_stdlib.cf",
"cf-serverd.cf",
"cf-execd.cf",
# Site specific stuff
@(g.allinputs), @(g.roleinputs), @(g.tidyupinputs)
};
}
bundle common g {
vars:
"allinputs" slist => { "site/resolv.cf", "site/all-common.cf",
"site/collectd.cf" };
"allbase" slist => { "unattendedupgrades", "timezone", "basepackages",
"collectd" };
"mysqlinputs" slist => { "site/mysql.cf" };
"mysqlbase" slist => { "mysql", "mysql_check_root" };
"tidyupinputs" slist => { "site/restart.cf" };
"tidyupbase" slist => { "restart" };
dnsmaster::
"roleinputs" slist => { @(mysqlinputs), "site/pdns-mysql.cf", "site/pdns.cf",
"site/pdns-admin.cf", "site/apache.cf" };
"rolebase" slist => { @(mysqlbase), "apache", "pdns_mysql", "pdns",
"pdns_admin" };
dnsslave::
"roleinputs" slist => { @(mysqlinputs), "site/pdns-mysql.cf",
"site/openvz-ve.cf", "site/pdns.cf" };
"rolebase" slist => { @(mysqlbase), "openvz_ve", "pdns_mysql", "pdns" };
nms::
"roleinputs" slist => { "site/apache.cf", "site/collection.cf" };
"rolebase" slist => { "apache", "collection" };
classes:
# set classes based on hostname:
"dnsmaster" or => { "ns0" };
"dnsslave" or => { "ns1", "ns2", "ns3" };
"nms" or => { "nms1" };
}
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine