Linux - Manutenção da versão do pacote em vários servidores

1

Problema : Se eu criar um servidor1 hoje, todos os pacotes instalados serão baseados nas versões atuais do upstream. Se eu rodar o server2 amanhã, novamente, todos os pacotes instalados serão baseados em versões upstream, exceto que, dentro da diferença de 24 horas entre server1 e server2, versões upstream em alguns pacotes podem ter mudado. Então acabamos com server1 e server2 fora de sincronia com relação às versões do pacote instalado.

Meu objetivo é manter todos os servidores na infraestrutura na mesma versão de "instantâneo", mas ainda oferecer suporte a um processo de atualização agendado regularmente.

Exemplo. server1 é encaixado hoje. Como parte do processo de snap, eu corro os seguintes comandos:

yum update --downloadonly --downloaddir=/path/to/my/repo/base/v1

yum update --enablerepo=mybaserepo

O que isso vai fazer é baixar todos os rpms com base nas versões atuais do upstream (snapshot). Isso me permite hospedar o rpms de "mybaserepo", então quando eu atualizar outros servidores, eles podem obter o rpms diretamente do meu repositório, sem ter que se preocupar com o rpms upstream não estar mais disponível.

Eu estava pensando em implementar um ciclo de atualização mensal, portanto v1 foi instantâneo em 5.1.2013 e agora é 6.1.13. O que eu estava pensando como um ciclo de processo era este:

  • Atualize todos os outros servidores para a versão 1 do instantâneo
  • Atualize o servidor de instantâneos para a versão 2 usando os comandos yum fornecidos acima

E este ciclo se repete mensalmente. Minha mente esta estratégia resolve dois problemas:

  1. Atualizando constantemente os servidores para garantir que os patches upstream sejam incluídos de maneira consistente
  2. Não está enviando novas versões de pacote sem primeiro testar (por 30 dias) no servidor de instantâneos

Com certeza, não há nenhuma resposta única absoluta, pois há muitas maneiras de esfolar um gato. O que estou procurando é uma prática comumente aceita pela indústria, que responde diretamente ao problema de atualização de servidores, garantindo as mesmas versões em todos os servidores em um ambiente corporativo.

    
por Mike Purcell 18.07.2013 / 00:00

2 respostas

1

  1. Crie seu próprio repositório (rsync um espelho centos oficial)
  2. Atualize o repo somente quando quiser receber novas atualizações para todos os seus servidores
  3. Aponte seus servidores apenas para o seu repo local.

Você pode usar o yum --downloadonly, mas ainda precisa criar um repositório. O trabalho já está pronto para você se você simplesmente espelhar um repositório público existente e apenas atualizá-lo quando quiser.

    
por 18.07.2013 / 01:25
0

A resposta da Yoonix é uma boa maneira de investir em ser proativo sobre atualizações, o que todos nós sabemos é o que nós devemos estar fazendo. Mas também é bom saber como são as coisas . :) Uma coisa que eu recomendo é um cronjob que faria algo parecido com este esboço de código (não testado):

#!/bin/bash

email="[email protected]"
sshuser="monitoringuser"
servers=$(cat my-servers.txt)
when=$(date '+%Y%m%d-%H%M%S')

for server in servers; do 
    ssh $sshuser@$server 'rpm -qa |sort' > server-$server-rpmqa-$when.txt
done

diffreport=diff-rpmqa-$when.txt

diff -u server-*-rpmqa-$when.txt > $diffreport

mail -a $diffreport -s "Package diff report for $when" $email

Você pode ver como seria útil rodar 'rpm -Va' periodicamente (talvez uma vez por semana?) e enviá-lo para verificar trojans, configuração, etc.

Naturalmente, esses tipos de scripts produzirão "relatórios" que só são realmente legíveis por pessoas altamente técnicas, portanto você pode considerar o uso de uma ferramenta. Como você provavelmente já está esperando, minha empresa, a Metafor Software , faz exatamente essa ferramenta! :)

    
por 24.07.2013 / 20:44