As variáveis precisam ser definidas e citadas. A sintaxe correta para virt_groups.pp é:
class virt_groups {
include os_vars
notice("in virt_groups, admin group is: ${os_vars::os_admin_group}, ${os_vars::os_admin_group_gid}")
@group { "${os_vars::os_admin_group}:
gid => "${os_vars::os_admin_group_gid}",
ensure => present,
}
}
Isso resolve meu problema imediato, mas ainda parece ser uma maneira desajeitada de lidar com o que provavelmente é um problema comum de marionetes.