Embora não seja exatamente o que você está pedindo, você já pensou em usar um Classificador de nós externos para definir e substituir o valor padrão para servidores específicos? Eu acredito que o ECN é o "caminho fantoche" de fazer as coisas em uma situação como a sua.
EDIT: (baseado no primeiro comentário)
Segunda ideia: você pode usar uma função personalizada para, pelo menos, tornar a lógica repetida de várias linhas um pouco mais legível. Algo como isso, que retorna o primeiro argumento "definido", embora com o fantoche, eu nunca tenha certeza do que "definido" é (neste caso, "undef" é passado como uma string vazia para a função, que ainda é boa o suficiente) .
module Puppet::Parser::Functions
newfunction(:get_default, :type => :rvalue) do |args|
value = nil
args.each { |x|
if ! x.nil? and x.length > 0
value = x
break
end
}
return value
end
end
Você pode ligar quantas vezes quiser:
$real_server_for_thing1 = get_default($server_for_thing1, $default_server)
$real_server_for_thing2 = get_default($server_for_thing2, $default_server)
$real_server_for_thing3 = get_default($server_for_thing3, $default_server)