Propagando mudanças para múltiplos servidores Linux com um comando

3

Então, eu tenho uma dúzia de servidores CentOS Linux. Em geral, sua configuração é basicamente a mesma.

Às vezes, preciso adicionar uma tarefa cron extra (arquivo crontab separado em /etc/cron.d/) e / ou copiar um novo script BASH / Perl para mais de 10 servidores ou executar a expressão sed para fazer pequenas alterações no um script que essencialmente está em todos os 10 ou mais servidores.

Eu fiquei muito cansado de fazer isso com base em um único host bem rápido. Então, como vocês lidam com esse desafio? Algum truque na manga? Qualquer software que eu deveria saber (gratuito e comprovado para funcionar de forma confiável)?

Estou procurando uma maneira de fazer isso no SSH, mas também estou curioso sobre outras abordagens.

    
por ILIV 14.05.2012 / 20:58

4 respostas

11

Você está abrindo uma enorme lata de minhocas aqui. :) Há um grande número de várias abordagens e soluções para esse problema (muito comum). Pode ser algo tão básico quanto parallel-ssh . Mas o que você está realmente procurando (mas ainda não sabe); é um sistema gerenciamento de configurações . Os 2 produtos / projetos concorrentes cada vez mais populares são: Puppet e Chef . Há também muitos outros produtos que permitem que você realize a mesma tarefa. Eu recentemente descobri sobre Ansible e parece realmente promissor. Se implementadas corretamente, todas essas soluções permitirão que você administre muito mais sistemas. A Wikipédia tem um artigo com uma lista de tais produtos link

    
por 14.05.2012 / 21:30
1

Você precisa de gerenciamento de configurações, como fantoche ou chef . Há uma antiga curva de aprendizado (se acostumar com o estilo imperativo idempotente leva um pouco de tempo), mas uma vez que você supera o inicial, é maravilhoso gerenciar muitos servidores configurados de forma semelhante e manter sua configuração atualizada.

Você também pode escrever scripts usando fabric - uma estrutura python que pode executar comandos sobre ssh, bem como copiar arquivos de / para servidores . E a variável host pode ter uma lista de hosts, facilitando isso. Vale a pena investigar.

Depois, há salt - um mecanismo de execução remota que se adapta muito bem.

Mas basta escolher as ferramentas de gerenciamento de configuração e executá-las.

    
por 14.05.2012 / 21:30
0

O que eu mesmo faria seria criar uma lista de servidores para os quais os comandos precisam ser executados. Configure os certificados ssh entre a máquina que executa os comandos e os servidores nos quais os comandos estão sendo executados. Em seguida, adicione os comandos que você precisa para executar o script e faça o script percorrer a lista de servidores que executam o comando. Você pode querer pensar em um sistema de registro, no entanto, erros podem causar dor de cabeça.

ou seja:

lista de servidores:

10.0.0.1
10.0.0.2
10.0.0.3

script que executa comandos

#!/bin/bash
for server in 'cat servers.lst'
do
ssh server some-command >> log.txt
done
    
por 14.05.2012 / 21:12
0
O

CFEngine existe há muito tempo exatamente com esse objetivo.

The best Configuration Management Solution if you need:

  • The Fastest and most Scalable Solution
  • To know the Actual State of your Systems
  • The Solution with the Best Security Track-record
  • Full Flexibility and Granular Control
  • A Mature and Enterprise ready Solution
    
por 15.05.2012 / 03:29