Como manter os arquivos de configuração em um servidor?

2

Eu regularmente instalo um produto (Atlassian Confluence, que é Tomcat + alguns arquivos) no meu servidor. Para cada atualização, após descompactar o tar.gz, preciso alterar os seguintes arquivos:

  • conf / server.xml - > Adicionar declarações JNDI e alterar porta
  • confluência / WEB-INF / classes / confluence-init.properties - > Alterar uma propriedade
  • confluence / WEB-INF / web.xml - > Requer HTTPS
  • confluence / WEB-INF / classes / log4j.properties - > Alterar o nível do log
  • Mova activation.jar e mail.jar da confluência / WEB-INF / libs para lib /
  • Adicione postgres.jar ao lib /

Existe uma maneira canônica de realizar essa configuração?

  • Qualquer maneira de executar uma "sobreposição" em um diretório?
  • Eu tentei o git, mas o git não é bom em mover arquivos.
  • Eu tentei escrever um script, mas ele não pode estar contido em 1 arquivo, pois preciso de arquivos de patch. Se estamos indo por esse caminho, existe uma maneira de escrever um script bash que contém os patches, então é autocontido?
  • Todos os administradores de sistemas escrevem um script ad-hoc todas as vezes, usando 'patch' e 'move' para editar os arquivos? Não existe uma ferramenta melhor?

Obrigado

    
por Adrien 25.01.2014 / 14:24

4 respostas

2

Ferramentas de gerenciamento de configuração, como fantoches. chef, ansible etc são as ferramentas de escolha para o administrador moderno.

    
por 25.01.2014 / 14:36
1

Crie um playbook Ansible para instalar o tar e a personalização subsequente. Em seguida, execute o manual contra o host de destino.

O Ansible fornece módulos fáceis de usar para modificar o conteúdo de arquivos, copiar arquivos, criar novos arquivos a partir de modelos, gerenciar serviços, etc.

Pessoalmente, usei-o para modificar, e. Arquivos de configuração do Tomcat.

Veja o link .

    
por 25.01.2014 / 19:09
0

Eu coloquei meus arquivos de configuração em um repositório do Mercurial (o Git também faria) e substituo os arquivos de configuração originais por links simbólicos para esses arquivos. Dessa forma eu não tenho que movê-los. Eu uso um script de shell pequeno para manter os links simbólicos, para que, após uma atualização, eu tenha que executar novamente esse script.

Deixe-me dar um exemplo. Digamos que eu queira fazer alterações no server.xml do Tomcat.

Configuração única

Primeiro, copio o server.xml original para o meu repositório de configuração do Mercurial. Em seguida, no meu script de shell, adiciono esses comandos para excluir o original server.xml e substituí-lo por um link simbólico para o arquivo dentro do repositório, por exemplo:

# The location of my Mercurial config repository
CONFIG=/home/admin/config

rm -f /etc/tomcat7/server.xml
ln -s $CONFIG/tomcat/server.xml /etc/tomcat7/server.xml

Em seguida, executo o script pela primeira vez, para testá-lo e criar os links simbólicos. Eu chamo o script setupLinks.sh e ele vive na raiz do meu repositório Mercurial.

sudo /home/admin/config/setupLinks.sh

Após uma atualização

Após uma atualização, preciso executar novamente o setupLinks.sh para substituir qualquer link simbólico que foi sobrescrito. É isso.

Acho muito útil ter meus arquivos de configuração dentro de um repositório de código-fonte. Dessa forma, posso rastrear alterações e extrair novas configurações de um repositório upstream. Eu uso ramificações nomeadas para configurações específicas do ambiente, por exemplo Eu tenho uma ramificação dev e uma ramificação prod .

Eu não disse nada sobre a movimentação de arquivos jar, mas isso pode ser feito facilmente adicionando algumas linhas ao shell script. Você também pode criar links simbólicos para arquivos jar.

    
por 25.01.2014 / 16:29
0

Use o dist-trick

Para evitar a sobrescrita dos seus arquivos de configuração, você pode usar o "dist-trick": Use arquivos * .dist (por exemplo, config.xml.dist) como arquivos de configuração padrão em sua distribuição. "dist" significa arquivo de distribuição. Em seguida, copie esse arquivo .dist para um arquivo não dist (config.xml) que não faz parte da distribuição. E voilà, seu arquivo de configuração nunca é sobrescrito novamente. Isso funciona muito bem, por ex. ao usar git, ftp, scp ou qualquer outro mecanismo para trazer arquivos para uma máquina de produção.

O dist-trick ajuda a evitar a configuração ou restauração de coisas após a implantação de arquivos.

    
por 16.02.2014 / 11:58