Это только пример. Реальные классы чуть сложнее:
Есть класс A, представляющий папочку (/opt/trash), есть множество классов C_i, представляющих программы, которые в эту папочку ставятся. У каждого класса (А и C_i) есть параметр ensure, который может принимать значения present и absent. Папочка может понадобиться сама по себе, без установленных программ.
Если существует хотя бы один С_i c ensure == present, то A::ensure тоже должно быть present
Если A::ensure == present, то A должно предшествовать всем С_i (в терминах require/before)
Если A::ensure == absent, то наоборот: Все С_i предшествуют A,
Очень желательна возможноть не упоминать A в описании ноды без необходимости.
Можно ли такие взаимоотношения вбить в puppet-манифесты?