Já faz muito tempo sem usar o CFengine, mas enfrentamos um problema semelhante. problema quando estávamos usando. Finalmente, chegamos a uma solução, usando um agregação dinâmica. Eu estou resgatando e modificando um snippet antigo de código, então a sintaxe pode estar errada, mas acho que você terá uma ideia.
bundle common g {
classes:
"some_servers" expression => "someserver01|someserver02";
"another_servers" expression => "anotherserver01|anotherserver02";
# Define other classes for your hosts here as needed
vars:
any::
"bs_common" slist => {
"bundle_1"
};
some_servers::
"bs" slist => {
"@(g.bs_common)",
"bundle_2",
"bundle_3",
};
another_servers::
"bs" slist => {
"@(g.bs_common)",
"bundle_3",
};
}
body control common {
bundlesequence => {
"@(g.bs)",
};
}