O Puppet não avisa você sobre variáveis não definidas (exceto em modelos, curiosamente), e, quando você define uma variável, somente o material especificado após é afetado. Então:
node 'test1.cob' inherits serveurClient {
# Nothing above this line knows $smcvhost
$smcvhost = 'all'
# Stuff from this line until "}" knows $smcvhost
}
# Stuff from this point on don't know $smcvhost
Se você observar as notas de lançamento das versões recentes do Puppet, verá que o escopo dinâmico está a caminho da aposentadoria. Meu conselho é evitar o uso de variáveis para passar informações o máximo possível - use parâmetros, como em definições ou classes com parâmetros.