Eu fiz algo semelhante a isso com o Puppet (doloroso) usando a solução documentada em: Definir parâmetros sysctl.conf com o Puppet
Foi um pouco trabalhoso obter uma função básica. Na sua situação, qual é a proporção de parâmetros que você deseja colocar na lista negra daqueles que não se importam de serem modificados? Isso impactaria a abordagem para resolver isso. Muitos engenheiros que eu conheço preferem mover arquivos de configuração inteiros versus usar modelos ou modificar valores.
O CFEngine tinha um parâmetro de modificação de sequência que garantiria que certas linhas estivessem presentes em um arquivo e as adicionaria se não estivessem. O mesmo para comentários ...