A same class/module/orwhateveritis multiple times
You can only use a parameterized class once. If you plan to hit a node several times with a function while varying the data definitions are the way to go.
example
class apache ( $module ) {
if module = ssl then and so on
}
define apache::vhost ($priority=99) {
file { "apache/vhost.d/${name}":
content => template("apache/vhosts/$name.erb"),
}
}
node webserver {
class { 'apache': module => 'ssl', }
apache::vhost { 'www': priority => 00, }
apache::vhost { 'test': priority => 99, }
}