Local preferido para armazenar arquivos de configuração que mudam frequentemente

18

Eu tenho vários aplicativos no meu servidor Linux que dependem de alguns arquivos de configuração. Esses aplicativos estão relacionados, mas separados. Pelo que vale, no momento em que cada aplicativo possui seu próprio diretório /opt. Os arquivos de configuração podem mudar uma vez por semana, mas não mais do que isso. Eu pretendo configurar um trabalho cron para obter a versão mais recente de um site FTP todos os domingos.

Ainda não entendi exatamente onde seria o melhor local para colocar esses arquivos de configuração. Aqui estão algumas possibilidades:

  • /etc/<appsuitename>/ É um arquivo de configuração, a configuração entra /etc
  • /var/<appsuitename>/ Os arquivos são alterados com bastante frequência, mas nunca diretamente pelo administrador (eu), apenas pelo provedor da plataforma.
  • /opt/<appsuitename>/libou /opt/<appsuitename>/commonEssa é mais uma maneira de pensar do Windows, mas pode fazer sentido nesse caso
  • /usr/lib provavelmente não, mas incluído para ser completo.

Ou talvez algo mais que eu não tenha pensado?

Edit: Respondendo às perguntas de @ MichaelKjörling:

  • Existem apenas 3 partições, /home, /, e /swap. /optnão é somente leitura.
  • Sim, outra pessoa terá que usar esse servidor se eu for atropelado por um ônibus.
  • Como essas aplicações são desenvolvidas internamente, sou eu quem decide para onde as configurações devem ir. Se não fosse uma "metatag", eu poderia ter colocado uma tag de práticas recomendadas.
  • Por fim, o que eu decidir não importa, sei que os sistemas organizacionais são mais para o administrador do que para o funcionamento interno do sistema operacional, mas eu gosto de seguir as convenções padrão, porque existem por um motivo.
durron597
fonte

Respostas:

21

O padrão de hierarquia do sistema de arquivos exige que os arquivos de configuração de algo instalado em /opt/xyzsejam inseridos /etc/opt/xyz, onde xyzdevem corresponder. Ou seja, um aplicativo instalado em um diretório em / opt que requer arquivos de configuração específicos do host deve ter um diretório correspondente em / etc / opt no qual esses arquivos de configuração vão.

O objetivo do / etc (configuração de sistema específica do host) é simplesmente declarado como:

A /etchierarquia contém arquivos de configuração. Um "arquivo de configuração" é um arquivo local usado para controlar a operação de um programa; deve ser estático e não pode ser um binário executável.

Obviamente, nenhuma configuração é totalmente estática, mas eu consideraria "estático" nesse contexto, aproximadamente "não muda sem a intervenção do administrador".

/ etc / opt é mais específico e seu objetivo é declarado como:

Os arquivos de configuração específicos do host para pacotes de software aplicativos complementares devem ser instalados no diretório /etc/opt/<subdir>, onde <subdir>é o nome da subárvore na /optqual os dados estáticos desse pacote são armazenados.

Como você está instalando o software em / opt, os arquivos de configuração devem entrar em um subdiretório ou hierarquia correspondente em / etc / opt.

Obviamente, nada exige que o seu sistema esteja em conformidade com a ESF, mas facilitará a localização de outros arquivos pelos usuários, pois saberão onde podem encontrá-los.

Como se trata de software desenvolvido internamente, também sugiro fortemente que você torne o local configurável . Mesmo que seja configurável apenas através de uma declaração de macro feita no makefile e efetuada através de uma reconstrução completa da fonte, isso ainda é muito melhor do que codificar um local específico no código-fonte em todos os lugares em que você deseja abrir um arquivo de configuração.

um CVn
fonte
Na verdade, isso já foi feito em um .propertiesarquivo. Mas, no momento, cada versão do software tem sua própria cópia em um /optsubdiretório, o que obviamente não é ideal e é algo que eu pretendia mudar. Esta pergunta é sobre "o que devo mudar para". Obrigado!
durron597