Como “yum update” / “aptitude safe-upgrade” muitos hosts?

6

Eu tenho dois livros sobre o Puppet e nenhum deles menciona como usar yum update ou aptitude safe-upgrade .

Então estou tendo a impressão de que o Puppet não pode, o que acho difícil de acreditar.

Pergunta

Como você enviaria yum update ou aptitude safe-upgrade em muitos hosts diferentes a cada mês?

    
por Sandra 25.07.2012 / 14:24

5 respostas

12

O Puppet é, na verdade, apenas um utilitário de gerenciamento de configuração, não uma ferramenta de automação. Se você quer uma automação adequada, então você vai querer estar olhando para o coletivo que começou como uma ferramenta de terceiros, e agora foi trazido sob o guarda-chuva de puppetlabs. Não tendo trabalhado com o coletivo, eu não posso realmente falar com o quão bem ele poderia lidar com isso, mas meu entendimento é que ele funciona melhor como um mecanismo arbitrário de execução de tarefas, que não funciona tão bem ao tentar executar tarefas repetidas regularmente. .

Acredito que a melhor maneira de fazer isso seria desenvolver os scripts e processos pelos quais você deseja atualizar e, em seguida, usar o fantoche para enviar as configurações. Então, faça a si mesmo as seguintes perguntas.

  1. Com que frequência eu quero que as máquinas sejam atualizadas?
  2. Desejo que eles sejam reinicializados automaticamente quando um novo kernel for instalado ou desejo apenas uma notificação?
  3. Devemos estar executando algum comando especial durante as atualizações?
  4. Tenho sistemas suficientes para que as atualizações sejam escalonadas?

Quando você começar a criar a configuração e responder a essas perguntas, provavelmente encontrará mais coisas que sairão do seu ambiente específico. Para um exemplo específico, o que faço é isto:

  • A maioria das atualizações dos meus sistemas é feita uma vez por semana, por meio do cron job. Dependendo da finalidade e do ambiente, alguns sistemas são muito mais frequentes.
  • A maioria dos sistemas é reinicializada automaticamente, alguns sistemas (dependendo da finalidade) enviam um lembrete para a reinicialização. Isso é tratado por meio de uma tarefa cron que verifica o arquivo vmlinuz numerado com a versão mais alta em /boot na saída de uname -r
  • Depois de ser queimado pela atualização glibc do RHEL 5.3- > 5.4, asseguro-me de atualizar o yum, depois o glibc e depois todo o resto.
  • Como tudo isso é executado por tarefas cron, eu durmo com tempos aleatórios entre cada execução do yum. Cada host pode levar entre 5 minutos e 45 minutos para ser concluído, o que faz um trabalho razoável de espalhar a carga.

Tudo isso está contido em dois arquivos, as duas entradas do cron (atualizações e verificação do kernel) armazenadas em /etc/cron.d e o script de atualização. Eu estou fazendo isso com um shell script cada vez mais confuso que pega argumentos de linha de comando para executar a atualização ou verificação do kernel e se deve ou não reiniciar. O Puppet então gerencia esses dois arquivos. Como você está lidando com sistemas baseados em rpm e dpkg, eu provavelmente criaria dois scripts ou faria funções do_update separadas para os dois tipos e cada um deles teria que ser chamado com uma opção de linha de comando diferente. Em seguida, você pode enviar o script correto verificando o operatingsystem fact na sua declaração de arquivo ou modelar a entrada do cron e usar o mesmo fato para decidir qual opção usar.

Usando um script bem testado, esse método funcionou muito bem. Bem, na verdade, essa configuração foi usada com sucesso por alguns anos para lidar com centenas de sistemas. Ocasionalmente, veremos os soluços quando os empacotadores do kernel começarem a adicionar mais e mais níveis de versões secundárias aos arquivos e a rotina de comparação sufocar.

    
por 25.07.2012 / 14:57
8

O fantoche em si não é a ferramenta para este trabalho. O Puppetlabs tem uma ferramenta separada chamada MCollective, que é semelhante ao Capistrano, Fabric and Func.

Existe um agente do MCollecive chamado de Agente de Pacotes , que é capaz de fazer atualizações do yum, entre outros tipos de gerenciamento de pacotes.

Você mencionou que parte da sua infraestrutura está executando o Ubuntu. Talvez você deva examinar o pacote atualizações autônomas .

    
por 25.07.2012 / 14:55
5

Se os seus anfitriões são anfitriões RHEL, você pode querer olhar para o RHN Satellite . Caso contrário, Spacewalk pode valer a pena ** (veja nota abaixo). Eles são projetados para gerenciar cópias locais de repositórios de pacotes upstream e para facilitar o gerenciamento de sistemas registrados no servidor RHN Satellite. Você pode programar pacotes para serem atualizados em um horário específico ou, se você tiver ativado o OSAD, as atualizações podem ser planejadas em tempo próximo na GUI da Web do RHN Satellite / Spacewalk.

Algumas pessoas postaram usando o fantoche abaixo, há alguns blogs e páginas da web escritos sobre como integrar o Puppet ao RHN Satellite.

ALTERNATIVAMENTE ...

Se você está mais interessado em olhar para um projeto emergente que acabará substituindo o RHN Satellite, você pode dar uma olhada no Projeto Katello . O Katello contém muitos projetos que fazem parte do produto CloudForms da Red Hat e é dito ser o upstream para a eventual substituição do RHN Satellite. Na verdade, Katello integra Puppet através do uso de Foreman. Olhando para o longo prazo Katello é definitivamente vale a pena considerar sobre o Spacewalk (mas não o RHN Satellite ainda devido a assinatura / suporte).

** Eu me referi ao RHN Satellite e ao Spacewalk como RHN Satellite no meu post para facilitar as coisas. A verdadeira distinção vem para o clima ou você não tem sistemas RHEL, se este for o caso, você precisará do RHN Satellite, pois ele pode ser baixado da RHN de uma forma suportada, o Spacewalk seria para usuários usando uma Reconstrução do RHEL ou Fedora (eu entendo Spacewalk pode suportar Debian também, mas eu não sei muito sobre isso pessoalmente.) Assim, ao procurar por informações, pode ser necessário procurar por Spacewalk e / ou RHN Satellite

    
por 25.07.2012 / 15:54
1

Você também pode usar cluster-ssh para se conectar a vários hosts ao mesmo tempo e executar o mesmo comando em todos eles. Tenho certeza que você pode fazer o script também.

sudo yum install clusterssh

Em seguida, execute-o a partir da linha de comando ou da GUI e adicione todos os hosts que você precisa para trabalhar. Assim que estiver pronto, você pode executar qualquer comando da janela e ele será executado em seus dispositivos.

    
por 25.07.2012 / 15:31
0

Os sistemas Debian / Ubuntu podem ser atualizados da seguinte forma:

class { 'apt': update => { frequency => 'weekly', }, }

Depois disso, para executar upgrade , você pode aplicar o mesmo truque mostrado abaixo.

Para sistemas CentOS / RedHat você pode assinar um exec em um arquivo mudo:

exec { 'yum-update': command => '/usr/bin/yum -q -y update', refreshonly => true, subscribe => File['/some/dumb/file']; }

você atualiza /some/dumb/file no fantoche e ele acionará uma atualização do yum

Se você não quiser executá-lo sozinho, talvez queira usar o Salt-stack. Preste atenção que sal-minion não se atualiza durante a atualização. O ZeroMQ fechará a conexão de repente, a atualização será interrompida e você precisará reconstruir o DB dos pacotes (aconteceu comigo em vários servidores Debian).

    
por 16.07.2017 / 18:35