O uso como $::packages
indica explicitamente que você deseja que a variável seja pesquisada no escopo superior, fora de qualquer classe. Já que você parece estar definindo dentro de uma classe, isso não funcionará.
Use apenas package { $packages:
ou package { $classname::packages:
.