$username = $forename[0].chr.downcase+name.downcase $email $forename.downcase+'.'+$name.downcase+'@localnet.lan'
O que faz você pensar que isso funcionará? Nenhuma dessas funções são fornecidas pela linguagem Puppet.
Dê uma olhada no link para ver o que você pode fazer com strings diretamente no Puppet (não muito ). Em seguida, dê uma olhada no link para ver como usar modelos do ERB, o que resolverá seu problema.
Além disso, e isso não é problema seu, mas é um problema: se você quer que suas strings interpolar variáveis, então você tem que usar aspas duplas, assim:
user { $username:
comment => "$forename $name",
...