Cómo implementar programas en varias máquinas

Cómo implementar programas en varias máquinas

Necesito instalar algunos programas en alrededor de 40 máquinas Kubuntu 13.04 y me gustaría saber qué opciones tengo para hacerlo de la manera más eficiente posible.

EDITAR: Ya tengo los repositorios configurados y todas las máquinas son clones idénticos, sin autenticación LDAP ni servidor centralizado.

Respuesta1

Cualquier software de gestión de configuración servirá, para eso están, sugeriría echarle un vistazo a chef. Esta es la propaganda de su página web:

Chef es una plataforma de automatización que transforma la infraestructura en código. Deja de pensar en términos de servidores físicos y virtuales. Con Chef, su verdadero activo es el código que da vida a esos servidores y a los servicios que brindan. Una infraestructura automatizada puede acelerar su tiempo de comercialización, ayudarle a gestionar la escala y la complejidad y proteger sus sistemas.

Ya sea que su red esté en la nube, en el sitio o híbrida, Chef puede automatizar la forma en que configura, implementa y escala sus servidores y aplicaciones, ya sea que administre 5 servidores, 5000 servidores o 500 000 servidores. No es de extrañar que empresas como Facebook y Amazon hayan elegido a Chef para desafíos de misión crítica.

este vídeo te ayudará mucho: http://www.youtube.com/watch?v=0UXh5EnFZrM

página de inicio: http://www.opscode.com/chef/

Respuesta2

Solo para ampliar la muy buena respuesta de Rahul, puede configurar el acceso sin contraseña a cada una de las máquinas con bastante facilidad utilizando este enfoque:

  1. instalarsshpassen su máquina local:

    sudo apt-get install sshpass
    

    Esto le permitirá pasar la contraseña como argumento de línea de comando:

     sshpass -p '<password>' ssh user@server
    
  2. Crear una clave ssh

    ssh-keygen -t rsa
    

    Puede simplificar las cosas permitiendo una frase de contraseña vacía (el resto de esta respuesta asumirá que lo ha hecho; avíseme si sus preocupaciones de seguridad lo prohíben y lo modificaré en consecuencia).

  3. Crea un archivo con todas las IP que te interesan y sus respectivos usuarios y contraseñas, una por línea:

    1.2.3.4 bob bobs_password
    11.22.33.44 hary harrys_password 
    

    Ahora, use sshpasspara copiar sus archivos clave y, siempre que haya usado una frase de contraseña vacía, permita el acceso sin contraseña a todas las 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. Ahora que tiene configurado el acceso sin contraseña, instale su software en cada máquina (esto supone que $userpuede ejecutarse apt-get, básicamente eso $useres root):

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

Respuesta3

Para objetivos a largo plazo

Si desea una herramienta de automatización que le permita centralizar la administración de los distintos tipos de *nix que se ejecutan en su red y administrar todos los aspectos de la configuración que pueda, entonces puede consultar:

  1. marioneta
  2. cocinero
  3. cfmotor3

Para objetivo a corto plazo

Si desea una solución temporal solo para instalar algún paquete a través de apt-geto yum, puede usar shell o perl, script en python.

Si ya ha configurado la autenticación sin contraseña, puede utilizar el siguiente 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

Si no tiene autenticación sin contraseña, puede usar expectuna herramienta o paramikomódulo en Python.

información relacionada