Existe uma maneira padrão de manter arquivos de configuração Linux modificados separados e identificáveis?

1

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.

    
por Yuval 02.09.2013 / 22:16

3 respostas

4

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.

    
por 02.09.2013 / 23:16
1

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.

    
por 02.09.2013 / 22:23
0

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.

    
por 02.09.2013 / 22:16