Como implantar programas em várias máquinas

Como implantar programas em várias máquinas

Preciso instalar alguns programas em cerca de 40 máquinas Kubuntu 13.04 e gostaria de saber quais opções tenho para fazer isso da maneira mais eficiente possível.

EDIT: Já tenho os repositórios configurados e as máquinas são todas clones idênticos, sem autenticação LDAP ou servidor centralizado.

Responder1

Qualquer software de gerenciamento de configuração serve, é para isso que servem, sugiro dar uma olhada no chef. Esta é a sinopse da página deles:

Chef é uma plataforma de automação que transforma infraestrutura em código. Pare de pensar em servidores físicos e virtuais. Com o Chef, seu verdadeiro ativo é o código que dá vida a esses servidores e aos serviços que eles fornecem. Uma infraestrutura automatizada pode acelerar o tempo de lançamento no mercado, ajudá-lo a gerenciar a escala e a complexidade e proteger seus sistemas.

Quer sua rede esteja na nuvem, no local ou híbrida, o Chef pode automatizar a forma como você configura, implanta e dimensiona seus servidores e aplicativos, independentemente de você gerenciar 5 servidores, 5.000 servidores ou 500.000 servidores. Não é de admirar que o Chef tenha sido escolhido por empresas como Facebook e Amazon para desafios de missão crítica.

esse vídeo vai ajudar muito: http://www.youtube.com/watch?v=0UXh5EnFZrM

pagina inicial: http://www.opscode.com/chef/

Responder2

Apenas para expandir a resposta muito boa de Rahul, você pode configurar o acesso sem senha a cada uma das máquinas com bastante facilidade usando esta abordagem:

  1. instalarsshpassna sua máquina local:

    sudo apt-get install sshpass
    

    Isso permitirá que você passe a senha como argumento de linha de comando:

     sshpass -p '<password>' ssh user@server
    
  2. Crie uma chave ssh

    ssh-keygen -t rsa
    

    Você pode simplificar as coisas permitindo uma senha vazia (o restante desta resposta assumirá que você fez isso, deixe-me saber se suas preocupações de segurança proíbem isso e eu modificarei de acordo).

  3. Crie um arquivo com todos os IPs de seu interesse e seus respectivos nomes de usuário e senhas, um por linha:

    1.2.3.4 bob bobs_password
    11.22.33.44 hary harrys_password 
    

    Agora, use sshpasspara copiar seus arquivos de chave e - desde que você tenha usado uma senha vazia - permita acesso sem senha a todas as máquinas:

    while read ip user pass; do 
      sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip;
    done < ips.txt
    
  4. Agora que você configurou o acesso sem senha, instale seu software em cada máquina (isso pressupõe que ele possa $userser executado apt-get, basicamente ):$userroot

     while read ip user pass; do 
       ssh $user@$ip "apt-get install package; 
     done < ips.txt
    

Responder3

Para objetivo de longo prazo

Se você deseja uma ferramenta de automação que permita centralizar o gerenciamento dos vários tipos *nix em execução em sua rede e gerenciar todos os aspectos da configuração que puder, você pode consultar:

  1. fantoche
  2. chefe de cozinha
  3. cfengine3

Para objetivo de curto prazo

Se você deseja uma solução temporária apenas para instalar algum pacote por meio de apt-getou yum, então você pode usar shell ou perl, script python.

Se você já configurou a autenticação sem senha, basta usar o seguinte script:

#!/usr/bin/env bash

Servers_list=/opt/servers_list
PackageName="package-name"

for Host in $(< $Servers_list )
do
    echo "Installing package on $Host"
    ssh "${Host}"  apt-get -y install "${PackageName}"

done

Se você não tiver autenticação sem senha, poderá usar expecta ferramenta ou paramikomódulo em python.

informação relacionada