Se você usa fantoches, pode configurar seu mestre de marionetes para extrair periodicamente os arquivos de ponto mais recentes do controle de versão.
No lado do controle de versão, você pode permitir que os usuários tenham permissão para gerenciar seus arquivos de ponto pessoais. (Não tenho 100% de certeza sobre os detalhes aqui, mas você poderia usar submodules git por exemplo, e ter um sub-repositório git para cada arquivo de usuários. Antes de sincronizar o repositório git "main", você atualiza os subrepresentantes.)
O Puppet pode enviar esses arquivos depois de uma sincronização de controle de versão.
Se o usuário quebrar alguma coisa, ele deve quebrar apenas para ele. Ele pode então atualizar os arquivos de ponto no controle de versão e esperar que o boneco o pegue.
Supondo que você use ambientes de marionetes, se ele quebrar, ele deverá quebrar apenas em um pequeno subconjunto de hosts.
Editar: configuração semelhante pode funcionar com o Chef também.