Como posso gerenciar o apt com eficiência em várias máquinas?


11

Eu gerencio cerca de 30 servidores Ubuntu usando fantoche. Eu já vi muitas referências ao cron-apt e apticron como abordagens para manter seus pacotes atualizados, mas não consegui encontrar uma maneira de gerenciar centralmente o processo. Com o cront-apt / apticron, eu ainda precisaria fazer login em cada host e executar aptitude updatepara executar a atualização. Sem mencionar as notificações de revisão de todas as 30 máquinas sempre que um pacote principal é atualizado.

Tem que haver uma maneira melhor. Alguma sugestão?

Respostas:


3

Paisagem pode ser do seu interesse. Esta é a ferramenta de gerenciamento "oficial" para gerenciar grandes implantações do Ubuntu, e a Canonical provavelmente está muito interessada em obter seu dinheiro pelo uso.

REEDIÇÃO:

Primeiro, um aviso; Eu não usei o espelhamento para o Debian ou Ubuntu, então não estou familiarizado com o software.

Segundo, parece que o apt-mirror seria uma solução "muito pesada", minhas desculpas. A idéia original era que você teria uma máquina de teste separada (ou ambiente de teste, provavelmente uma máquina virtual?) Para implantar a atualização. Quando estiver satisfeito com o desempenho da atualização, você puxará / colocará o pacote no seu espelho "deploy" (haveria o espelho local das fontes oficiais e um espelho secundário para apenas as atualizações que você deseja implantar). As máquinas remotas executariam uma atualização em um horário predefinido e a retirariam do espelho "implantar" em cada máquina, uma tarefa cron que consiste em:

apt-get update && apt-get upgrade --quiet --assume-yes

Infelizmente, quando comecei a ler os detalhes, parece que apt-mirrorisso atrai todo tipo de coisa e não apenas os pacotes que você procura. Então, vou abandonar essa ideia, embora o conceito tenha algum mérito.


Paisagem parece interessante. Vou ter que olhar mais de perto para isso. Não sei ao certo como a execução de um espelho apt local (o que atualmente faço) me ajudaria a aprovar / revisar atualizações pendentes. Você pode esclarecer isso?
INSYTE

14

Um colega de trabalho descobriu e examinou brevemente o apt-dater, que é um "gerenciador de atualização remota de pacotes baseado em terminal".

Você usa uma interface baseada em maldições para gerenciar atualizações em todos os hosts ou grupos de hosts, etc.

Confia no ssh e no sudo nas máquinas gerenciadas.

consulte http://www.ibh.de/apt-dater/

Eu não o usei, então não posso endossá-lo, mas soa próximo ao que você está procurando.


Isso parece muito promissor. Insyte, vou recomendar esta resposta por conta própria. Embora você possa executar todas as etapas que descrevi, você quer realmente investir tempo nisso, quando provavelmente poderia fazer uma configuração muito rápida disso e seguir em frente com a vida? @ Jeff, +1 para uma boa sugestão.
Avery Payne

4

Como você já está usando o Puppet, a maneira mais fácil de fazer isso (e a melhor para controle de alterações / rastreamento) é especificar a versão desejada dos pacotes que você deseja instalar no manifesto do fantoche. Você fica de olho na lista de anúncios de segurança e, quando aparecer alguma coisa, basta atualizar o Puppet para dizer "instale esta nova versão deste pacote". Supondo que você esteja usando o controle de revisão em seus manifestos, você saberá quando a "política" foi alterada e os relatórios do Puppet mostrarão exatamente quando a alteração foi realmente feita (para que você possa se correlacionar facilmente com eventos de log posteriores).


É praticamente o que fazemos. Não usamos o tipo de pacote fantoche, pois isso faria com que todos os servidores instalassem todos os pacotes. Em vez disso, escrevemos um arquivo no servidor com o nome e a versão do pacote e, em seguida, usamos um script para executá-los, verificando se eles estão instalados e depois tentamos instalá-los. A segunda parte é um script que lê minha pasta de email com emails apticron e pega todos os pacotes que precisam ser atualizados e reescrevem o arquivo de manifesto. Ainda não sabemos ao certo como esse método funciona.
David Pashley

2
Por que o tipo de pacote Puppet instala todos os pacotes em todas as máquinas? Você coloca as sub-rotinas de cada pacote na classe relevante ou no tipo definido, para que ele seja instalado apenas nas máquinas apropriadas. Se você deseja centralizar a lista de versões em um arquivo, tenha uma grande lista de recursos virtuais e realize-os quando necessário.
womble

2

Dê uma olhada no clusterssh (apt-get install clusterssh):

$ cssh server1 server2 server3 ...


1
Isso realmente ainda funciona no 10.9.3 ... é tipo de hilariante de usá-lo
Jonathan S. Fisher

1

Sem realmente ter pensado nisso antes, minha primeira ideia seria algo semelhante ao que avery sugeriu, especialmente se você já tem um ambiente de teste.

Basicamente, você define suas máquinas de produção para atualizar automaticamente a partir de seu próprio repositório local e só atualiza esse repositório depois de atualizar seu ambiente de teste para a versão mais recente do que quer que seja executado.

O Apticron não escala bem, foi projetado para ser executado em ambientes bem pequenos, mas tem alguns bons pontos:

  • Ele não envia apenas uma lista, mas também os registros de alterações dos pacotes a serem atualizados.
  • Para obter os changelogs, ele baixa os pacotes; portanto, quando você atualiza, não precisa esperar pelo download.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.