Todos sabem que este site aqui sempre foi meu repositório de soluções, seja ela muito simples, ou mais complexa.
E hoje, como uso o Bind gerenciado via Terraform em um ambiente, acabei recebendo um erro ao rodar o comando :
rndc freeze dominioexemplo.com.br
Você vai se perguntar porque eu precisei rodar este comando se eu uso o Terraform. O caso é que esta zona é de um ambiente legado e nem todas as entradas estão sendo gerenciadas pelo Terraform. E como as zonas gerenciadas pelo Terraform tem que ser configuradas como dinâmicas, toda zona tem um arquivo de journal que, é comparado com a zona do arquivo e caso tenha inconsistências, ela não é carregada.
O freeze congela a zona, permite a edição e, quando sobe novamente, ele simplesmente expurga o arquivo de journal ( formato jnrl ) e a zona volta a responder sem problema.
Mas, ao rodar o freeze o erro apresentado foi :
rndc: freeze failed: not found
Achei o troço muito estranho. Mas é aquela, sempre temos uma surpresa nova quando nosso cérebro começa a rodar tudo no modo automático, né ?
E a solução estava super na cara. A zona em questão existia em duas views do Bind. Na external e na internal. Portanto, quando eu não especificava a view correta, o comando tentava rodar o freeze, mas apareciam duas entradas para o mesmo nome de domínio.
E para resolver, foi só passar no final, a view correta. Tomemos como correta a view external, o comando ficaria :
rndc freeze dominioexemplo.com.br IN external
E seu comando vai rodar sem erros.
Caso queira dar o thaw na zona :
rndc thaw dominioexemplo.com.br IN external
Espero que ajude, mesmo sendo um troço super simples. Mas uma coisa que eu ando aprendendo na marra, é que é melhor pensar simples, do que complexo. E tudo acontecerá de forma mais amigável.