O padrão mais simples é criar uma definição que exija o arquivo que você deseja com base em suas entradas.
define kickstart::config ($os, $arch) {
# $name is a reserved variable, it works based on the name of this define
# kickstart::configs { "this_becomes_name": }
file { "kickstart/conf.d/${name}-${os}-${arch}":
ensure => present,
content => template("kickstart/conf.d/${name}.erb"),
#content => template("kickstart/conf.d/${name}-${os}.erb"),
#content => template("kickstart/conf.d/${name}-${os}-${arch}.erb"),
# or whatever, but this template file will need to exists.
}
}
e depois aplicar como
kickstart::config { 'deploy1':
arch => 'i386',
os => 'centos5',
}