define nspawn::template ( String $template_name = $name, Enum['debian', 'arch'] $os = $template_name.split('-')[0], Optional[String] $version = undef, String $puppet_server = $nspawn::puppet_server, String $template_dir = $nspawn::template_dir, ) { $template = "${template_name}.base" $root = "${template_dir}/${template}" case $os { 'debian': { $real_version = if $version != undef { $version } else { # Oout of bounds indexing gives 'undef' $template_name.split('-')[1] } nspawn::os::debian { $template: os_version => $real_version, template_dir => $template_dir, before => Nspawn::Template_final[$template], } } 'arch': { nspawn::os::arch { $template: template_dir => $template_dir, before => Nspawn::Template_final[$template], } } } nspawn::template_final { $template: root => $root, puppet_server => $puppet_server, } }