Território subjetivo, de fato. Eu não gosto do etckeeper, o que faz é criar uma história muito confusa de / etc. Agora para / var / named (suponho que é onde suas zonas estão definidas) pode ser melhor, especialmente se você tiver apenas algumas zonas, mas ainda assim seria um hack feio.
Acho que a maneira "correta" de fazer isso é usar o Puppet ou outro software similar de gerenciamento de configuração. Em vez de configurar seus servidores, você escreve o código Puppet que configura seus servidores. Eu uso o mercurial (mas você pode usar o git) para gerenciar o repositório do Puppet code. É útil para ramificar e mesclar (por exemplo, você está trabalhando em uma nova configuração, que você não tem certeza é testado o suficiente, e então você deve corrigir urgentemente um problema em um servidor de produção; neste caso você ramifica a partir da versão estável e depois mesclar). A combinação de Puppet + DVCS é muito útil e muito limpa, mas Puppet é uma pequena fera que precisa de um pouco de tempo para domar, e bind é particularmente difícil de fazer certo com o Puppet por causa dos números de série da zona.
Atualização:
Eu tenho pensado nisso e tenho a tendência de concluir que não há nada errado em usar o git para rastrear / var / named, e que não é um hack feio. Sim, os arquivos estão relacionados. Sim, você pode querer clonar a fim de fazer uma revisão séria de sua configuração, ramo, a fim de manter sua configuração de produção durante a revisão e mesclar, quando terminar a revisão (embora tudo isso possa ser incomum).
Um pouco fora do tópico, mas há duas coisas sobre a configuração do bind que eu não gosto. Primeiro, para adicionar uma zona, eu preciso adicionar / modificar dois arquivos: named.conf e o arquivo de zona. Isso é desnecessariamente complicado. Eu preferiria uma configuração similar à do apache, com arquivos de zona em / etc / bind / zones-available, linkado de / etc / bind / zones-enabled, sem a necessidade de tocar em named.conf. Em segundo lugar, os números de série são um incômodo. Nós principalmente automatizamos a manutenção deles; em máquinas gerenciadas por marionetes Eu tenho um shell script que os conserta, e em outros eu uso um plugin vim. O fato de nós os automatizarmos significa que eles podem estar ausentes. Carimbos de data / hora de arquivo podem ser usados em vez disso. Os números de série irão criar alguma fealdade no histórico do repositório, mas isso é um problema de bind, e não um problema de git, ou da prática de usar o git para rastrear a configuração de bind.