Ordering of puppet classes

Foreman provides something like the site.pp for puppet. In the site.pp it is quite easy to give an order of the puppet-classes, like:
node ‘node1’ {
include class1, class2
Class[‘class1’] -> Class[‘class2’]
}
As an example, class1 provides some user-login and security relevant configs. class2 contains a huge amount of software installation etc. In fact class2 does not depend on class1, thus I do not want to write some dependencies in class2. However, a sequential execution of the puppet classes in the right order is essential in such a case.
I do not find a nice solution for this problem with the actual release. An implementation of such an ordered execution would be very helpful.

We provide an ENC to Puppet but AFAIK Puppet itself can’t order resources with an ENC. A common pattern is to introduce profile classes for this that wrap up individual classes into one class with all the ordering applied to it.