Sim, você poderia fazer isso, mas envolveria escrever seu próprio fornecedor de clientes no Puppet. Não é trivial, mas se você estivesse disposto a reduzir as configurações de seu interesse, seria mais simples.
Um caso simples pode ser apenas definir mestre ou escravo dinamicamente. Nós faríamos esses parâmetros na sua classe Redis. Nós criamos o template redis.conf e colocamos essas configurações da forma que você está fazendo agora. Então você precisaria de algum tipo de sintaxe como a seguinte, por meio da semântica, que provavelmente seria mais expressiva.
redisconf { 'master': enable => 'true', }
O redisconf seria seu provedor personalizado que seria escrito em Ruby. Ele precisará se conectar à porta do servidor Redis (que é outra entrada e padrão que você precisa definir). Depois que você se conectar, precisará enviar uma informação e capturar a saída resultante como um hash.
O primeiro passo é determinar qual versão do Redis você tem. Se é 2.4 / 2.6 você pode usar config set e config get , senão você vai usar o hash que já temos e rodar comandos manualmente. Em nosso exemplo, você verificaria o valor da função. Se é mestre, não faça nada. Se for um escravo, execute 'slave of nobody' e gere um evento Puppet. Assumindo que existam diferenças, o provedor do Redisconf Puppet precisaria fazer mudanças e, idealmente, verificar ou lançar e errar. Enrole a coisa toda em Puppet-isms e você estaria pronto.
Seria um bom projeto se você decidisse usá-lo.