Embora não os separe, o etckeeper faz um excelente trabalho de rastreamento de alterações arquivos de configuração. Manter o repositório fora da caixa em algum lugar facilitaria a restauração dessas alterações em uma nova máquina.
OBSERVAÇÃO Esta é uma cópia de um pergunta fechada do Stack Overflow , e uma versão construtiva, sinto, de um pergunta semelhante no Server Fault .
Geralmente, preciso editar muitos arquivos de configuração em /etc
, mas não quero que essas alterações sejam perdidas quando eu fizer a próxima atualização do sistema.
Agora, eu abriguei todos os arquivos de configuração, bem como alguns dos meus scripts de manutenção em /opt/admin
e os alvos de symlinked /etc
, mas isso não parece correto de acordo com os padrões que eu vi . Outra opção que eu pensei, é alojar estes em /usr/local
. O documento supracitado diz que é para uso do administrador do sistema ao instalar o software localmente. Isso é o mais próximo que eu tenho. No entanto, também /usr/local
fica sobrescrito quando você instala um novo software não empacotado.
Existe uma prática padrão / amplamente seguida de como mantê-las? Como esta não é uma página de discussão, as respostas devem ser definidas e com um artigo ou dois para apoiá-las.
OBSERVAÇÃO Incluí a minha própria resposta que achei mais útil até agora. Eu reabrei isso aqui para que possa ser discutido e para que mais respostas cheguem.
Embora não os separe, o etckeeper faz um excelente trabalho de rastreamento de alterações arquivos de configuração. Manter o repositório fora da caixa em algum lugar facilitaria a restauração dessas alterações em uma nova máquina.
Você poderia usar uma ferramenta de gerenciamento de configuração para fazer isso. Isso é bem escalável quando você adiciona servidores com a mesma função.
Parece que você preparou um que atenda às suas necessidades, mas talvez queira analisar o Chef, o Puppet, o Ansible, o Owareware ou outras ferramentas de gerenciamento / automação / orquestração de configuração, dependendo de suas necessidades e orçamento.
Das respostas às perguntas que mencionei, parece haver duas soluções gerais - usar links simbólicos ou manter uma lista de arquivos (veja as respostas de ptman e Jim em perguntas vinculadas). Não consegui encontrar um artigo sobre práticas recomendadas.
Eu sugiro uma solução híbrida: você mantém apenas um arquivo simples (eu chamo de FILES
) com uma lista de arquivos de configuração. Um script lê FILES
e vincula arquivos de configuração real a uma hierarquia de sistema de arquivos duplicada em um diretório escolhido (chamo o script link-config-files.sh
e o diretório system-config
).
Dessa forma, você só mantém arquivos em um arquivo que é fácil de editar e não envolve magia de shell. Os arquivos de configuração de que você gosta estão acessíveis em system-config
graças ao symlink. Um cron job foi configurado para fazer o backup de system-config
, para que todos os arquivos de configuração sejam submetidos a backup automaticamente. E outra tarefa cron executa periodicamente link-config-files.sh
, de modo que tudo é deixado para que um arquivo apareça em (ou desapareça) system-config
e o backup seja feito para editar FILES
.
Acho que esta é a melhor solução até agora. Claro que sou parcial. Em qualquer caso, aqui está meu script e também vincula um script de backup.